WindowsXP/admin/wmi/wbem/sdk/vs7/vside/servexpl/selectwmiclasstreedialog.cs
2025-04-27 07:49:33 -04:00

1004 lines
26 KiB
C#

namespace Microsoft.VSDesigner.WMI {
using System;
using System.ComponentModel;
//using System.Core;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Collections;
using System.Resources;
using System.Reflection;
using System.Management;
using System.Threading;
using System.Net;
/// <summary>
/// Filters define which classes will be displayed by the class selector UI
/// </summary>
internal enum SchemaFilters
{
ShowAll = 0,
NoAbstract = 0x1,
NoSystem = 0x10,
NoEvent = 0x100,
NoData = 0x1000,
NoAssoc = 0x10000
}
internal class SelectWMIClassTreeDialog : Form
{
private void InitializeComponent ()
{
}
private enum ClassListControls
{
ClassTreeView = 0,
SelectedClassList = 1
}
private ClassFilters currentFilters = ClassFilters.ConcreteData;
private string machineName = string.Empty;
private string connectAs = null;
private string password = null;
private Button cancelBtn = new Button();
private Button okBtn = new Button();
private WMIClassTreeView classList = null;
private ListBox selectedClassList = new ListBox();
private Button btnAdd = new Button();
private Button btnRemove = new Button();
private CheckBox chkShowAbstract = new CheckBox();
private CheckBox chkShowSystem = new CheckBox();
private CheckBox chkShowEvent = new CheckBox();
private CheckBox chkShowData = new CheckBox();
private Label labelSearch = new Label();
private TextBox descr = new TextBox ();
private Label labelSelected = new Label();
private TextBox editSearch = new TextBox();
private Button btnGo = new Button();
private TreeNode nodeLastFindNS = null;
private String strLastFindClass = "";
private Color defaultForeColor = Color.Black;
private Color defaultBackColor = Color.White;
private ImageList imgList = new ImageList();
private ArrayList selectedClasses = null;
private ArrayList listSearchHits = new ArrayList();
private SortedList curClassList = new SortedList(100);
private enum schema_icons
{
SCHEMA_NS_CLOSED =0,
SCHEMA_NS_OPEN,
SCHEMA_CLASS,
SCHEMA_ASSOC,
SCHEMA_CLASS_ABSTRACT1,
SCHEMA_CLASS_ABSTRACT2,
SCHEMA_ASSOC_ABSTRACT1,
SCHEMA_ASSOC_ABSTRACT2
};
public ClassFilters CurrentFilters
{
get {
return currentFilters;
}
}
public ArrayList SelectedClasses
{
get {
return selectedClasses;
}
set {
if (selectedClasses != value)
{
String[] arSel = new String[value.Count];
value.CopyTo(arSel, 0);
selectedClassList.Items.Clear();
for (int i = 0; i < arSel.Length; i++)
{
selectedClassList.Items.Add (arSel[i]);
}
}
}
}
public String CurrentServer
{
get {
return machineName;
}
}
public SelectWMIClassTreeDialog(string server,
string connectAsIn,
string passwordIn,
ClassFilters filters,
ArrayList selClasses
/*TODO: credentials */
)
{
try
{
currentFilters = filters;
machineName = server;
selectedClasses = selClasses;
connectAs = connectAsIn;
password = passwordIn;
this.Text = WMISys.GetString("WMISE_ClassSelectorLbl");
this.AcceptButton = okBtn;
this.AutoScaleBaseSize = (Size) new Point(5, 13);
this.BorderStyle = FormBorderStyle.FixedDialog;
this.CancelButton = cancelBtn;
int dlgWidth = 527;
int dlgHeight = 480;
this.ClientSize = (Size) new Point(dlgWidth, dlgHeight);
//this.add_KeyUp(new KeyEventHandler(this.OnKeyUp));
this.ShowInTaskbar = false;
this.MinimizeBox = false;
this.MaximizeBox = false;
labelSearch.Location = new Point(16, 16);
labelSearch.Size = (Size) new Point(200, 13);
labelSearch.TabStop = false;
labelSearch.Text = WMISys.GetString("WMISE_ClassSelectorLblSearch");
editSearch.Location = new Point(16, 33);
editSearch.Size = (Size) new Point(200, 20);
editSearch.TabStop = true;
editSearch.TextChanged += new EventHandler(this.SearchPattern_changed);
editSearch.AcceptsReturn = true; //???
editSearch.TabIndex = 0;
btnGo.Location = new Point(226, 33);
btnGo.TabStop = true;
btnGo.Text = WMISys.GetString("WMISE_ClassSelectorBtnSearch");
btnGo.Click += new EventHandler(this.Search_click);
classList = new WMIClassTreeView(machineName,
connectAs,
password,
currentFilters,
null);
classList.Location = new Point(16, 63);
classList.Size = (Size) new Point(200, 270);
classList.ShowPlusMinus = true;
classList.ShowLines = true;
classList.DoubleClick += (new EventHandler(this.Add_click));
classList.BeforeCollapse += (new TreeViewCancelEventHandler(this.BeforeNodeCollapse));
classList.AfterSelect += (new TreeViewEventHandler (this.AfterNodeSelect));
classList.KeyUp += (new KeyEventHandler(this.OnTreeKeyUp));
classList.HideSelection = false;
classList.FullRowSelect = true;
//Image symbols = Image.FromFile("symbols.bmp");
//imgList.Images.AddStrip(symbols);
imgList.TransparentColor = defaultBackColor; //didn't help!!!!!!!
imgList.Images.Add ((Image)new Bitmap(GetType(), "closed_fol.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "open_fol.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "class.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "classassoc.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "abstr1.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "abstr2.bmp"), defaultBackColor);
imgList.Images.Add ((Image)new Bitmap(GetType(), "abstr_assoc1.bmp"), defaultBackColor); //SCHEMA_ASSOC_ABSTRACT1
imgList.Images.Add ((Image)new Bitmap(GetType(), "abstr_assoc2.bmp"), defaultBackColor); //SCHEMA_ASSOC_ABSTRACT2
btnAdd.Location = new Point(226, 150);
btnAdd.TabStop = true;
btnAdd.Text = WMISys.GetString("WMISE_ClassSelectorBtnAdd");
btnAdd.Click += new EventHandler(this.Add_click);
btnAdd.Enabled = false;
btnRemove.Location = new Point(226, 200);
btnRemove.TabStop = true;
btnRemove.Text = WMISys.GetString("WMISE_ClassSelectorBtnRemove");
btnRemove.Click += new EventHandler(this.Remove_click);
btnRemove.Enabled = false;
labelSelected.Location = new Point(311, 43);
labelSelected.Size = (Size) new Point(200, 20);
labelSelected.TabStop = false;
labelSelected.Text = WMISys.GetString("WMISE_ClassSelectorSelClassesLbl");
selectedClassList.Location = new Point(311, 63);
selectedClassList.Size = (Size) new Point(200, 270);
selectedClassList.SelectionMode = SelectionMode.MultiExtended;
selectedClassList.Sorted = true;
//initialize selected class list
String[] arSel = new String[selectedClasses.Count];
selectedClasses.CopyTo(arSel, 0);
for (int i = 0; i < arSel.Length; i++)
{
selectedClassList.Items.Add (arSel[i]);
}
selectedClassList.Click += new EventHandler (this.AfterClassSelect);
selectedClassList.KeyUp += new KeyEventHandler (this.OnClassListKeyUp);
selectedClassList.DoubleClick += (new EventHandler(this.Remove_click));
/*
chkShowData.Checked = ((currentFilters & SchemaFilters.NoData) == 0);
chkShowData.Location = new Point(500, 370);
chkShowData.Text = "Data";
chkShowData.Click += new EventHandler(this.Filter_click);
chkShowData.Visible = false;
chkShowSystem.Checked = ((currentFilters & SchemaFilters.NoSystem) == 0);
chkShowSystem.Location = new Point(550, 370);
chkShowSystem.Text = "System";
chkShowSystem.Click += new EventHandler(this.Filter_click);
chkShowSystem.Visible = false;
chkShowEvent.Checked = ((currentFilters & SchemaFilters.NoEvent) == 0);
chkShowEvent.Location = new Point(500, 400);
chkShowEvent.Text = "Event";
chkShowEvent.Click += new EventHandler(this.Filter_click);
chkShowEvent.Visible = false;
chkShowAbstract.Checked = ((currentFilters & SchemaFilters.NoAbstract) == 0);
chkShowAbstract.Location = new Point( 550, 400);
chkShowAbstract.Text = "Abstract";
chkShowAbstract.Click += new EventHandler(this.Filter_click);
chkShowAbstract.Visible = false;
*/
descr.Text = "";
descr.Location = new Point (16, 342);
descr.Size = (Size) new Point (500, 75);
descr.Multiline = true;
descr.ReadOnly = true;
descr.ScrollBars = ScrollBars.Vertical;
okBtn.Text = WMISys.GetString("WMISE_OK");
okBtn.TabIndex = 1;
okBtn.Location = new Point(350, 427);
okBtn.DialogResult = DialogResult.OK;
okBtn.Click += new EventHandler(this.OK_click);
cancelBtn.Text = WMISys.GetString("WMISE_Cancel");
cancelBtn.TabIndex = 2;
cancelBtn.Location = new Point(436, 427);
cancelBtn.DialogResult = DialogResult.Cancel;
this.Controls.Add(cancelBtn);
this.Controls.Add(okBtn);
this.Controls.Add(classList);
this.Controls.Add(selectedClassList);
//chkShowAbstract,
//chkShowSystem,
//chkShowEvent,
//chkShowData,
this.Controls.Add(labelSearch);
this.Controls.Add(labelSelected);
this.Controls.Add(editSearch);
this.Controls.Add(btnGo);
this.Controls.Add(btnAdd);
this.Controls.Add(btnRemove);
this.Controls.Add(descr);
}
catch (Exception exc)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", exc.Message, exc.StackTrace));
}
}
protected virtual void BeforeNodeCollapse(Object sender, TreeViewCancelEventArgs args)
{
TreeNode curNode = args.Node;
//check that this is a namespace
if (curNode.Parent != null)
{
return;
}
curNode.ImageIndex = (int)schema_icons.SCHEMA_NS_CLOSED;
curNode.SelectedImageIndex = (int)schema_icons.SCHEMA_NS_CLOSED;
}
protected virtual void AfterNodeSelect(Object sender, TreeViewEventArgs args)
{
try
{
if (classList.SelectedNode != null)
{
btnAdd.Enabled = true;
}
TreeNode curNode = args.Node;
//check if this is a namespace
if (curNode.Parent == null)
{
descr.Text = GetNSDescription(curNode.Text);
}
else
{
//Update description field
UpdateClassDescription(ClassListControls.ClassTreeView);
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
protected virtual void AfterClassSelect(Object sender, EventArgs args)
{
if (selectedClassList.SelectedIndices.Count > 0)
{
btnRemove.Enabled = true;
}
UpdateClassDescription(ClassListControls.SelectedClassList);
}
/*
private bool UpdateView ()
{
try
{
classList.Nodes.Clear();
classList.EnumNamespaces("root", 0);
return true;
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
return false;
}
}
*/
private void Search_click (Object source, EventArgs args)
{
try
{
TreeNode find = DoSearch();
if (find != null)
{
classList.SelectedNode = find;
//classList.SelectedImageIndex = find.Index;
nodeLastFindNS = find.Parent;
strLastFindClass = find.Text;
find.BackColor = Color.DarkGray;
find.ForeColor = Color.White;
//add found node to a list, so that the color-coding is removed before
//the next search
//MessageBox.Show("Length of found nodes list is " + listSearchHits.Count);
//MessageBox.Show("Found node is " + find.Text);
listSearchHits.Add(find.Handle);
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void SearchPattern_changed (Object source, EventArgs args)
{
try
{
nodeLastFindNS = null;
strLastFindClass = "";
if (editSearch.Text != "")
{
this.AcceptButton = btnGo;
this.UpdateDefaultButton();
}
else
{
this.AcceptButton = okBtn;
this.UpdateDefaultButton();
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private TreeNode DoSearch()
{
try
{
if (editSearch.Text == "")
{
return null;
}
bool bFound = false;
TreeNode retNode = null;
if (nodeLastFindNS == null && strLastFindClass == "")
//Find first case
{
//clean up highlighted nodes from previous search
IEnumerator enumHits = listSearchHits.GetEnumerator();
while (enumHits.MoveNext())
{
IntPtr curHandle = (IntPtr)enumHits.Current;
TreeNode oldHit = TreeNode.FromHandle(classList, curHandle);
oldHit.BackColor = defaultBackColor;
oldHit.ForeColor = defaultForeColor;
}
//clean up the highlighted indices list
listSearchHits.Clear();
//enumerate nodes
for (int i = 0; i < classList.Nodes.Count; i++)
{
TreeNode curNode = classList.Nodes[i];
if (curNode.Parent == null ) //this is a namespace
{
if (curNode.Nodes.Count == 1 && curNode.Nodes[0].Text == "")
// a namespace hasn't been expanded before
{
bool bRes = classList.ShowClasses(curNode);
}
String strPattern = editSearch.Text.ToLower();
for (int j = 0; j < curNode.Nodes.Count; j ++)
{
String strClassName = curNode.Nodes[j].Text.ToLower();
if (strClassName.IndexOf(strPattern) >= 0)
{
bFound = true;
retNode = curNode.Nodes[j];
curNode.Expand(); //if a match was found, expand the namespace
break;
}
}
if (bFound)
{
break;
}
}
}
}
else //Find next funtionality
{
//enumerate top-level nodes (namespaces)
for (int i = 0; i < classList.Nodes.Count; i++)
{
TreeNode curNode = classList.Nodes[i];
if (curNode.Parent == null && curNode.Index >= nodeLastFindNS.Index) //this is a namespace
{
if (curNode.Nodes.Count == 1 && curNode.Nodes[0].Text == "")
// the namespace hasn't been expanded
{
bool bRes = classList.ShowClasses(curNode);
}
String strPattern = editSearch.Text.ToLower();
bool bSkipping = (nodeLastFindNS.Text.ToLower() == curNode.Text.ToLower());
for (int j = 0; j < curNode.Nodes.Count; j ++)
{
String strClassName = curNode.Nodes[j].Text.ToLower();
if (bSkipping)
{
if (strClassName == strLastFindClass.ToLower())
{
bSkipping = false;
continue;
}
}
else //inspect class
{
if (strClassName.IndexOf(strPattern) >= 0)
{
bFound = true;
retNode = curNode.Nodes[j];
curNode.Expand(); //if a match was found, expand the namespace
break;
}
}
}
if (bFound)
{
break;
}
}
}
}
//wmi raid 2849: beta2. Don't have a localized string.
if (!bFound)
{
MessageBox.Show (WMISys.GetString("WMISE_Search_Failed", editSearch.Text));
}
return retNode;
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
return null;
}
}
private void OnClassDoubleClick (Object source, EventArgs args)
{
try
{
if (classList.SelectedNode.Parent == null)
{
//this is a namespace
return;
}
String path = classList.SelectedNode.Parent.Text + ":" + classList.SelectedNode.Text;
//SingleViewContainerDlg dlg = new SingleViewContainerDlg(path);
//DialogResult ret = dlg.ShowDialog(this);
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void Add_click (Object source, EventArgs args)
{
try
{
if (classList.SelectedNode.Parent == null)
{
//this is a namespace
DialogResult res =
MessageBox.Show(WMISys.GetString("WMISE_ClassSelectorAskViewAll"),
"",
MessageBoxButtons.YesNo);
if (res == DialogResult.No)
{
return;
}
else
{
AddWholeNS(classList.SelectedNode);
}
}
else
{
DoAddNode (classList.SelectedNode);
}
classList.SelectedNode = null;
btnAdd.Enabled = false;
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void Remove_click (Object source, EventArgs args)
{
try
{
while (selectedClassList.SelectedItems.Count > 0)
{
selectedClassList.Items.Remove(selectedClassList.SelectedItems[0]);
}
if (selectedClassList.SelectedItems.Count <= 0)
{
btnRemove.Enabled = false;
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void OK_click (Object source, EventArgs args)
{
try
{
selectedClasses.Clear();
for (int i = 0; i < selectedClassList.Items.Count; i++)
{
selectedClasses.Add (selectedClassList.Items[i].ToString());
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void AddWholeNS(TreeNode selNode)
{
try
{
if (selNode.Parent != null)
{
//this is not a namespace
return;
}
if (selNode.Nodes.Count == 1 && selNode.Nodes[0].Text == "")
// the namespace hasn't been expanded before
{
bool bRes = classList.ShowClasses(selNode);
}
for (int j = 0; j < selNode.Nodes.Count; j ++)
{
DoAddNode(selNode.Nodes[j]);
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private void DoAddNode (TreeNode node)
{
try
{
String path =
node.Parent.Text + ":" + node.Text;
//see if the item is already there
for (int i = 0; i < selectedClassList.Items.Count; i++)
{
if (selectedClassList.Items[i].ToString().ToUpper() == path.ToUpper())
{
MessageBox.Show(WMISys.GetString("WMISE_ClassSelectorClassAlreadySelected", path));
//selectedClassList.SelectedItem = selectedClassList.Items.All[i];
return;
}
}
//if not, add it:
selectedClassList.Items.Add(path);
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
private string GetNSDescription (string nsName)
{
if (nsName.ToLower() == "root")
{
return WMISys.GetString("WMISE_NSDescription_Root");
}
if (nsName.ToLower() == "root\\default")
{
return WMISys.GetString("WMISE_NSDescription_Root_Default");
}
if (nsName.ToLower() == "root\\cimv2")
{
return WMISys.GetString("WMISE_NSDescription_Root_Cimv2");
}
if (nsName.ToLower() == "root\\cimv2\\applications")
{
return WMISys.GetString("WMISE_NSDescription_Root_Cimv2_Applications");
}
if (nsName.ToLower() == "root\\cimv2\\applications\\microsoftie")
{
return WMISys.GetString("WMISE_NSDescription_Root_Cimv2_Applications_MicrosoftIE");
}
if (nsName.ToLower() == "root\\directory")
{
return WMISys.GetString("WMISE_NSDescription_Root_Directory");
}
if (nsName.ToLower() == "root\\directory\\ldap")
{
return WMISys.GetString("WMISE_NSDescription_Root_Directory_Ldap");
}
if (nsName.ToLower() == "root\\wmi")
{
return WMISys.GetString("WMISE_NSDescription_Root_Wmi");
}
if (nsName.ToLower() == "root\\microsoftsqlserver")
{
return WMISys.GetString("WMISE_NSDescription_Root_Microsoft_SQLServer");
}
return string.Empty;
}
private void OnClassListKeyUp (Object sender, KeyEventArgs args)
{
if ((args.KeyData == Keys.Up && args.Modifiers == Keys.None) ||
(args.KeyData == Keys.Down && args.Modifiers == Keys.None))
{
if (selectedClassList.SelectedIndices.Count > 0)
{
btnRemove.Enabled = true;
}
UpdateClassDescription(ClassListControls.SelectedClassList);
}
}
private void OnTreeKeyUp (Object sender, KeyEventArgs args)
{
if ((args.KeyData == Keys.Up && args.Modifiers == Keys.None) ||
(args.KeyData == Keys.Down && args.Modifiers == Keys.None))
{
if (classList.SelectedNode != null)
{
btnAdd.Enabled = true;
}
if (classList.SelectedNode.Parent == null)
{
descr.Text = GetNSDescription(classList.SelectedNode.Text);
}
else
{
this.UpdateClassDescription(ClassListControls.ClassTreeView);
}
}
}
private bool UpdateClassDescription (ClassListControls curControl)
{
string ns = string.Empty;
string className = string.Empty;
if (curControl == ClassListControls.ClassTreeView)
{
if (classList.SelectedNode != null)
{
ns = classList.SelectedNode.Parent.Text;
className = classList.SelectedNode.Text;
}
}
else //this is a selected class list
{
//see if this is a multiple selection (or nothing is selected) and clear description in this case
if (selectedClassList.SelectedIndices.Count != 1)
{
descr.Text = string.Empty;
return true;
}
string relPath = selectedClassList.SelectedItem.ToString();
ns = relPath.Substring(0, relPath.IndexOf(":"));
className = relPath.Substring(relPath.IndexOf(":") + 1);
}
ManagementObject obj = WmiHelper.GetClassObject(machineName,
ns,
className,
this.connectAs,
this.password);
string theDescr = WmiHelper.GetClassDescription(obj, this.connectAs, this.password);
if (theDescr != string.Empty)
{
//Add special handling for newlines: change all "\n" to System.Environment.NewLine:
int i = -1;
string theRest = theDescr;
string theStart = string.Empty;
while ((i = theRest.IndexOf("\n")) >= 0)
{
theStart = theStart + theRest.Substring(0, i) + System.Environment.NewLine;
theRest = theRest.Substring(i + 1);
}
theDescr = theStart + theRest;
descr.Text = theDescr;
return true;
}
else
{
descr.Text = WMISys.GetString("WMISE_NoDescr");
return false;
}
}
public void CleanUpPreviousSelections ()
{
try
{
IEnumerator enumHits = listSearchHits.GetEnumerator();
while (enumHits.MoveNext())
{
IntPtr curHandle = (IntPtr)enumHits.Current;
TreeNode oldHit = TreeNode.FromHandle(classList, curHandle);
oldHit.BackColor = defaultBackColor;
oldHit.ForeColor = defaultForeColor;
}
//clean up the highlighted indices list
listSearchHits.Clear();
//classList.SelectedNode = null;
selectedClassList.ClearSelected();
descr.Text = string.Empty;
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
/*
//Handle F3 for searching here
protected override void OnKeyUp (KeyEventArgs args)
{
try
{
//MessageBox.Show("key up: " + args.ToString());
if (args.KeyData == Keys.F3)
{
Search_click (this, null);
}
else
{
base.OnKeyUp(args);
}
}
catch (Exception e)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", e.Message, e.StackTrace));
}
}
*/
}
internal class CancelDialog : Form
{
private Button cancelBtn = new Button();
private Label text = new Label();
private void InitializeComponent ()
{
this.ClientSize = (Size)new Point(250, 100);
this.ShowInTaskbar = false;
this.MinimizeBox = false;
this.MaximizeBox = false;
this.AcceptButton = cancelBtn;
this.BorderStyle = FormBorderStyle.FixedDialog;
this.AutoScaleBaseSize = (Size) new Point(5, 13);
text.Location = new Point(15, 15);
text.TabStop = false;
text.Size = (Size) new Point(200, 25);
cancelBtn.Location = new Point(95, 70);
cancelBtn.DialogResult = DialogResult.Cancel;
cancelBtn.Text = WMISys.GetString("WMISE_Cancel");
cancelBtn.TabStop = true;
}
public CancelDialog(string textIn, int x, int y)
{
InitializeComponent();
text.Text = textIn;
this.Location = new Point(x, y);
this.Controls.Add(cancelBtn);
this.Controls.Add(text);
}
}
}