Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | no message |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | sourceforge |
Files: | files | file ages | folders |
SHA1: |
aef54e6441dba601b4cc9b1a48b79432 |
User & Date: | rmsimpson 2006-02-24 02:58:24 |
Context
2006-02-24
| ||
06:07 | work in progress check-in: 1283114bab user: rmsimpson tags: sourceforge | |
02:58 | no message check-in: aef54e6441 user: rmsimpson tags: sourceforge | |
2006-02-22
| ||
15:08 | no message check-in: 6edf1bc2c2 user: rmsimpson tags: sourceforge | |
Changes
Added SQLite.Designer/SQLiteDataAdapterToolboxItem.cs.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
namespace SQLite.Designer { using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing.Design; using System.Data.SQLite; using System.Data.Common; using System.Reflection; using System.Collections.Generic; internal sealed class SQLiteDataAdapterToolboxItem : ToolboxItem { public SQLiteDataAdapterToolboxItem() { } protected override IComponent[] CreateComponentsCore(IDesignerHost host) { SQLiteDataAdapter adp = new SQLiteDataAdapter(); if (adp == null) return null; List<IComponent> list = new List<IComponent>(); IContainer container = host.Container; adp.SelectCommand = new SQLiteCommand(); adp.SelectCommand.DesignTimeVisible = false; container.Add(adp.SelectCommand, GenerateName(container, "SelectCommand")); adp.InsertCommand = new SQLiteCommand(); adp.InsertCommand.DesignTimeVisible = false; container.Add(adp.InsertCommand, GenerateName(container, "InsertCommand")); adp.UpdateCommand = new SQLiteCommand(); adp.UpdateCommand.DesignTimeVisible = false; container.Add(adp.UpdateCommand, GenerateName(container, "UpdateCommand")); adp.DeleteCommand = new SQLiteCommand(); adp.DeleteCommand.DesignTimeVisible = false; container.Add(adp.DeleteCommand, GenerateName(container, "DeleteCommand")); ITypeResolutionService res = (ITypeResolutionService)host.GetService(typeof(ITypeResolutionService)); if (res != null) { res.ReferenceAssembly(typeof(SQLiteDataAdapter).Assembly.GetName()); } container.Add(adp); } private static string GenerateName(IContainer container, string baseName) { ComponentCollection coll = container.Components; string uniqueName; int n = 1; do { uniqueName = String.Format("sqlite{0}{1}", baseName, n++); } while (coll[uniqueName] != null); return uniqueName; } } } |
Changes to System.Data.SQLite/SQLiteCommand.cs.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... 215 216 217 218 219 220 221 222 223 224 225 226 227 228 ... 255 256 257 258 259 260 261 262 263 264 265 266 267 268 ... 291 292 293 294 295 296 297 298 299 300 301 302 303 304 ... 330 331 332 333 334 335 336 337 338 339 340 341 342 343 ... 350 351 352 353 354 355 356 357 358 359 360 361 362 363 ... 522 523 524 525 526 527 528 529 530 531 532 533 534 535 ... 537 538 539 540 541 542 543 544 545 546 547 548 549 550 |
namespace System.Data.SQLite { using System; using System.Data; using System.Data.Common; using System.Collections.Generic; /// <summary> /// SQLite implementation of DbCommand. /// </summary> public sealed class SQLiteCommand : DbCommand, ICloneable { /// <summary> /// The command text this command is based on /// </summary> private string _commandText; /// <summary> ................................................................................ public override void Cancel() { } /// <summary> /// The SQL command text associated with the command /// </summary> public override string CommandText { get { return _commandText; } set ................................................................................ _commandTimeout = value; } } /// <summary> /// The type of the command. SQLite only supports CommandType.Text /// </summary> public override CommandType CommandType { get { return CommandType.Text; } set ................................................................................ { return new SQLiteParameter(); } /// <summary> /// The connection associated with this command /// </summary> public new SQLiteConnection Connection { get { return _cnn; } set { if (_activeReader != null) throw new InvalidOperationException("Cannot set Connection while a DataReader is active"); ................................................................................ Connection = (SQLiteConnection)value; } } /// <summary> /// Returns the SQLiteParameterCollection for the given command /// </summary> public new SQLiteParameterCollection Parameters { get { return _parameterCollection; } } /// <summary> /// Forwards to the local Parameters property ................................................................................ } } /// <summary> /// The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the /// command's underlying connection. /// </summary> public new SQLiteTransaction Transaction { get { return _transaction; } set { if (_cnn != null) { ................................................................................ public override void Prepare() { } /// <summary> /// Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. /// </summary> public override UpdateRowSource UpdatedRowSource { get { return _updateRowSource; } set ................................................................................ _updateRowSource = value; } } /// <summary> /// Determines if the command is visible at design time. Defaults to True. /// </summary> public override bool DesignTimeVisible { get { return _designTimeVisible; } set |
> > > > > > > > > > > > > > > > > > > > > > > |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 ... 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 ... 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 ... 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 ... 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 |
namespace System.Data.SQLite { using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.ComponentModel; /// <summary> /// SQLite implementation of DbCommand. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [Designer("Microsoft.VSDesigner.Data.VS.DataCommandDesigner, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ToolboxItem(true)] #endif public sealed class SQLiteCommand : DbCommand, ICloneable { /// <summary> /// The command text this command is based on /// </summary> private string _commandText; /// <summary> ................................................................................ public override void Cancel() { } /// <summary> /// The SQL command text associated with the command /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue(""), RefreshProperties(RefreshProperties.All), Editor("Microsoft.VSDesigner.Data.SQL.Design.SqlCommandTextEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public override string CommandText { get { return _commandText; } set ................................................................................ _commandTimeout = value; } } /// <summary> /// The type of the command. SQLite only supports CommandType.Text /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [RefreshProperties(RefreshProperties.All), DefaultValue(CommandType.Text)] #endif public override CommandType CommandType { get { return CommandType.Text; } set ................................................................................ { return new SQLiteParameter(); } /// <summary> /// The connection associated with this command /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DbConnectionEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public new SQLiteConnection Connection { get { return _cnn; } set { if (_activeReader != null) throw new InvalidOperationException("Cannot set Connection while a DataReader is active"); ................................................................................ Connection = (SQLiteConnection)value; } } /// <summary> /// Returns the SQLiteParameterCollection for the given command /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] #endif public new SQLiteParameterCollection Parameters { get { return _parameterCollection; } } /// <summary> /// Forwards to the local Parameters property ................................................................................ } } /// <summary> /// The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the /// command's underlying connection. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] #endif public new SQLiteTransaction Transaction { get { return _transaction; } set { if (_cnn != null) { ................................................................................ public override void Prepare() { } /// <summary> /// Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. /// </summary> [DefaultValue(UpdateRowSource.FirstReturnedRecord)] public override UpdateRowSource UpdatedRowSource { get { return _updateRowSource; } set ................................................................................ _updateRowSource = value; } } /// <summary> /// Determines if the command is visible at design time. Defaults to True. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DesignOnly(true), Browsable(false), DefaultValue(true), EditorBrowsable(EditorBrowsableState.Never)] #endif public override bool DesignTimeVisible { get { return _designTimeVisible; } set |
Changes to System.Data.SQLite/SQLiteConnection.cs.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 479 480 481 482 483 484 485 486 487 488 489 490 491 492 ... 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 ... 683 684 685 686 687 688 689 690 691 692 693 694 695 696 ... 697 698 699 700 701 702 703 704 705 706 707 708 709 710 |
namespace System.Data.SQLite { using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.Globalization; /// <summary> /// The I/O file cache flushing behavior for the connection /// </summary> public enum SynchronizationModes { /// <summary> ................................................................................ /// <description>Enlist</description> /// <description><B>Y</B> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description> /// <description>N</description> /// <description>Y</description> /// </item> /// </list> /// </remarks> public override string ConnectionString { get { return _connectionString; } set ................................................................................ { return CreateCommand(); } /// <summary> /// Returns the filename without extension or path /// </summary> public override string DataSource { get { return _dataSource; } } /// <summary> /// Returns an empty string /// </summary> public override string Database { get { return "main"; } } ................................................................................ } OnStateChange(ConnectionState.Open); } /// <summary> /// Returns the version of the underlying SQLite database engine /// </summary> public override string ServerVersion { get { if (_connectionState != ConnectionState.Open) throw new InvalidOperationException(); ................................................................................ return _sql.Version; } } /// <summary> /// Returns the state of the connection. /// </summary> public override ConnectionState State { get { return _connectionState; } } |
> > > > > > > > > > > > > > > > |
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 ... 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 ... 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 ... 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 |
namespace System.Data.SQLite { using System; using System.Data; using System.Data.Common; using System.Collections.Generic; using System.Globalization; using System.ComponentModel; /// <summary> /// The I/O file cache flushing behavior for the connection /// </summary> public enum SynchronizationModes { /// <summary> ................................................................................ /// <description>Enlist</description> /// <description><B>Y</B> - Automatically enlist in distributed transactions<br/><b>N</b> - No automatic enlistment</description> /// <description>N</description> /// <description>Y</description> /// </item> /// </list> /// </remarks> #if !PLATFORM_COMPACTFRAMEWORK [RefreshProperties(RefreshProperties.All), DefaultValue("")] #endif public override string ConnectionString { get { return _connectionString; } set ................................................................................ { return CreateCommand(); } /// <summary> /// Returns the filename without extension or path /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] #endif public override string DataSource { get { return _dataSource; } } /// <summary> /// Returns an empty string /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] #endif public override string Database { get { return "main"; } } ................................................................................ } OnStateChange(ConnectionState.Open); } /// <summary> /// Returns the version of the underlying SQLite database engine /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] #endif public override string ServerVersion { get { if (_connectionState != ConnectionState.Open) throw new InvalidOperationException(); ................................................................................ return _sql.Version; } } /// <summary> /// Returns the state of the connection. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] #endif public override ConnectionState State { get { return _connectionState; } } |
Changes to System.Data.SQLite/SQLiteDataAdapter.cs.
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
using System.ComponentModel;
/// <summary>
/// SQLite implementation of DbDataAdapter.
/// </summary>
#if !PLATFORM_COMPACTFRAMEWORK
[DefaultEvent("RowUpdated")]
#endif
public sealed class SQLiteDataAdapter : DbDataAdapter
{
private static object _updatingEventPH = new object();
private static object _updatedEventPH = new object();
/// <overloads>
................................................................................
if (handler != null)
handler(this, value);
}
/// <summary>
/// Gets/sets the select command for this DataAdapter
/// </summary>
public new SQLiteCommand SelectCommand
{
get { return (SQLiteCommand)base.SelectCommand; }
set { base.SelectCommand = value; }
}
/// <summary>
/// Gets/sets the insert command for this DataAdapter
/// </summary>
public new SQLiteCommand InsertCommand
{
get { return (SQLiteCommand)base.InsertCommand; }
set { base.InsertCommand = value; }
}
/// <summary>
/// Gets/sets the update command for this DataAdapter
/// </summary>
public new SQLiteCommand UpdateCommand
{
get { return (SQLiteCommand)base.UpdateCommand; }
set { base.UpdateCommand = value; }
}
/// <summary>
/// Gets/sets the delete command for this DataAdapter
/// </summary>
public new SQLiteCommand DeleteCommand
{
get { return (SQLiteCommand)base.DeleteCommand; }
set { base.DeleteCommand = value; }
}
}
}
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
using System.ComponentModel; /// <summary> /// SQLite implementation of DbDataAdapter. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultEvent("RowUpdated")] [ToolboxItem("Microsoft.VSDesigner.Data.VS.SqlDataAdapterToolboxItem, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] [Designer("Microsoft.VSDesigner.Data.VS.SqlDataAdapterDesigner, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public sealed class SQLiteDataAdapter : DbDataAdapter { private static object _updatingEventPH = new object(); private static object _updatedEventPH = new object(); /// <overloads> ................................................................................ if (handler != null) handler(this, value); } /// <summary> /// Gets/sets the select command for this DataAdapter /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public new SQLiteCommand SelectCommand { get { return (SQLiteCommand)base.SelectCommand; } set { base.SelectCommand = value; } } /// <summary> /// Gets/sets the insert command for this DataAdapter /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public new SQLiteCommand InsertCommand { get { return (SQLiteCommand)base.InsertCommand; } set { base.InsertCommand = value; } } /// <summary> /// Gets/sets the update command for this DataAdapter /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public new SQLiteCommand UpdateCommand { get { return (SQLiteCommand)base.UpdateCommand; } set { base.UpdateCommand = value; } } /// <summary> /// Gets/sets the delete command for this DataAdapter /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [DefaultValue((string)null), Editor("Microsoft.VSDesigner.Data.Design.DBCommandEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] #endif public new SQLiteCommand DeleteCommand { get { return (SQLiteCommand)base.DeleteCommand; } set { base.DeleteCommand = value; } } } } |
Changes to System.Data.SQLite/SQLiteParameterCollection.cs.
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
...
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
using System.ComponentModel; using System.Reflection; /// <summary> /// SQLite implementation of DbParameterCollection. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [ListBindable(true)] #endif [DefaultMember("Item")] public sealed class SQLiteParameterCollection : DbParameterCollection { /// <summary> /// The underlying command to which this collection belongs /// </summary> private SQLiteCommand _command; /// <summary> ................................................................................ /// Returns a count of parameters in the collection /// </summary> public override int Count { get { return _parameterList.Count; } } /// <summary> /// Retrieve a parameter by name from the collection /// </summary> /// <param name="parameterName">The name of the parameter to fetch</param> /// <returns>A DbParameter object</returns> protected override DbParameter GetParameter(string parameterName) { |
|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
...
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
using System.ComponentModel; using System.Reflection; /// <summary> /// SQLite implementation of DbParameterCollection. /// </summary> #if !PLATFORM_COMPACTFRAMEWORK [Editor("Microsoft.VSDesigner.Data.Design.DBParametersEditor, Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), ListBindable(false)] #endif public sealed class SQLiteParameterCollection : DbParameterCollection { /// <summary> /// The underlying command to which this collection belongs /// </summary> private SQLiteCommand _command; /// <summary> ................................................................................ /// Returns a count of parameters in the collection /// </summary> public override int Count { get { return _parameterList.Count; } } public new SQLiteParameter this[string parameterName] { get { return (SQLiteParameter)GetParameter(parameterName); } set { SetParameter(parameterName, value); } } public new SQLiteParameter this[int index] { get { return (SQLiteParameter)GetParameter(index); } set { SetParameter(index, value); } } /// <summary> /// Retrieve a parameter by name from the collection /// </summary> /// <param name="parameterName">The name of the parameter to fetch</param> /// <returns>A DbParameter object</returns> protected override DbParameter GetParameter(string parameterName) { |
Changes to tools/install/InstallDesigner.cs.
150
151
152
153
154
155
156
157
158
159
160
161
162
...
163
164
165
166
167
168
169
170
171
172
173
174
|
try { using (subkey = parent.OpenSubKey(String.Format("{0}\\{1}", subkeyname, _regRoot))) { ListViewItem item = new ListViewItem(itemName); item.Tag = subkeyname; using (RegistryKey subsubkey = subkey.OpenSubKey(String.Format("DataProviders\\{0}", (isChecked == null) ? lookFor.ToString("B") : ((Guid)isChecked).ToString("B")))) { if (subkey == null) { DoInstallUninstall(item); ................................................................................ throw new ArgumentNullException("Key doesn't exist"); } bool itemChecked = (subsubkey.GetValue(null) != null); DoInstallUninstall(item); item.Checked = itemChecked; } installList.Items.Add(item); if (item.Checked) { DoInstallUninstall(item); } |
>
>
>
>
>
>
|
>
>
>
>
>
|
<
<
<
|
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
...
174
175
176
177
178
179
180
181
182
|
try { using (subkey = parent.OpenSubKey(String.Format("{0}\\{1}", subkeyname, _regRoot))) { ListViewItem item = new ListViewItem(itemName); item.Tag = subkeyname; using (RegistryKey subsubkey = subkey.OpenSubKey("DataProviders")) { if (subsubkey == null) throw new ArgumentException("Edition not installed"); } using (RegistryKey subsubkey = subkey.OpenSubKey(String.Format("DataProviders\\{0}", (isChecked == null) ? lookFor.ToString("B") : ((Guid)isChecked).ToString("B")))) { if (subsubkey == null) { DoInstallUninstall(item); } else { bool itemChecked = (subsubkey.GetValue(null) != null); DoInstallUninstall(item); ................................................................................ item.Checked = itemChecked; } } installList.Items.Add(item); if (item.Checked) { DoInstallUninstall(item); } |