public BaseKeyClassForm(string baseKeyClassName, CimInstanceNameList nlist) { InitializeComponent(); //------------------------------------------------------ this.Text = "Base Key Class - " + baseKeyClassName; #region Display Signature this.AddLabel(LabelType.Name); LastLabel.Text = baseKeyClassName; this.AlignSignatureLabels(null, null); #endregion uxLbl_Description.Text = "Instances (" + nlist.Count + "):"; if (nlist.Count > 0) { #region Setup Columns List<ColumnHeader> tmpList = new List<ColumnHeader>(); foreach (CimKeyBinding curKB in nlist[0].KeyBindings) { ColumnHeader tmpColHead = new ColumnHeader(); tmpColHead.Text = curKB.Name.ToString(); tmpList.Add(tmpColHead); } uxLstView_Items.Columns.Clear(); uxLstView_Items.Columns.AddRange(tmpList.ToArray()); #endregion #region Display Instances foreach (CimInstanceName curIN in nlist) { string[] line = new string[uxLstView_Items.Columns.Count]; for (int i = 0; i < uxLstView_Items.Columns.Count; i++) { switch (curIN.KeyBindings[i].Type) { case CimKeyBinding.RefType.KeyValue: CimKeyValue tmpKV = (CimKeyValue)curIN.KeyBindings[i].Value; line[i] = tmpKV.Value; break; case CimKeyBinding.RefType.ValueReference: CimValueReference tmpKR = (CimValueReference)curIN.KeyBindings[i].Value; switch (tmpKR.Type) { case CimValueReference.RefType.ClassNamePath: line[i] = "REF " + ((CimClassPath)tmpKR.CimObject).Class.ClassName.ToString(); break; case CimValueReference.RefType.ClassName: line[i] = "REF " + ((CimName)tmpKR.CimObject).ToString(); break; case CimValueReference.RefType.InstanceNamePath: line[i] = "REF " + ((CimInstancePath)tmpKR.CimObject).Instance.ClassName; break; case CimValueReference.RefType.InstanceName: line[i] = "REF " + ((CimInstanceName)tmpKR.CimObject).ClassName; break; default: throw new Exception("Not implemented yet"); } break; default: throw new Exception("Not implemented yet"); } } ListViewItem item = new ListViewItem(line, (int)ImageUtils.ImageIndex.Instance); item.Tag = curIN; uxLstView_Items.Items.Add(item); } #endregion totalWidth = 0; foreach (ColumnHeader curCH in uxLstView_Items.Columns) { if (nlist.Count < 1000) { curCH.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); } if (curCH.Width < 80) curCH.Width = 80; totalWidth += curCH.Width; } totalWidth -= uxLstView_Items.Columns[uxLstView_Items.Columns.Count - 1].Width; uxLstView_Items.Columns[uxLstView_Items.Columns.Count - 1].Width = uxLstView_Items.ClientSize.Width - totalWidth; } }
private void uxLstView_Instances_DoubleClick(object sender, EventArgs e) { CimInstanceNameList bKCInstances = new CimInstanceNameList(); // Get the selected Property / Method / Qualifier's name string selectedBaseKeyClass = uxLstView_Instances.SelectedItems[0].SubItems[0].Text; progress = new ProgressForm(); progress.Show(); progress.Refresh(); CimInstanceNameList list = mainWbemClient.EnumerateInstanceNames(treeView1.SelectedNode.Text); foreach (CimInstanceName curCIN in list) { if (FindBaseKeyClass(curCIN.ClassName) == selectedBaseKeyClass) { // it's one of the selected instances bKCInstances.Add(curCIN); } } list.RemoveRange(0, list.Count); list = null; GC.Collect(); progress.Status = ProgressForm.Updating; progress.Refresh(); BaseKeyClassForm form = new BaseKeyClassForm(selectedBaseKeyClass, bKCInstances); bKCInstances.RemoveRange(0, bKCInstances.Count); bKCInstances = null; GC.Collect(); progress.UIupdateComplete(100); progress.Close(); form.ShowDialog(); uxLstView_Instances.SelectedItems[0].SubItems[1].Text = form.UxLstView_Items.Items.Count.ToString(); form.UxLstView_Items.Items.Clear(); form = null; GC.Collect(); }