我的问题是我正在开发一个小型应用程序来在 SCCM 2012 服务器上执行一些操作。
目前它只是创建、删除和移动文件夹。
我想要做的是有一个你登录的表格。这已经完成了。从这里您应该选择您想要执行的操作类型(例如,移动或删除)。然后应该会弹出一个新表单,您可以在这里施展魔法。
这一切都完美无缺,但是,我认为我没有以“正确”的方式进行操作。现在,我将连接对象传递给所有创建的表单的构造函数,并且表单是在彼此内部创建的。是否有意义?
我想做的是有某种控制类,我从那里创建登录表单,决定是否应该隐藏或显示它,然后将连接对象传递到我希望它去的地方,当它有被退回/保存。
我的问题是,当我创建表单时,所有控制流都转到该表单。如果我可以将流程保留在控制类中,我会更喜欢,并从这里控制表单是否根据成功登录隐藏/显示。
我希望你能理解我的问题,并可能有解决方案?
这是form1的代码片段:
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
userName = textBox1.Text;
password = textBox2.Text;
getConnection = Connect(COMPUTER, userName, password);
if (connection != null)
{
Form2 form2 = new Form2(connection);
form2.Show();
this.Hide();
}
}
public WqlConnectionManager Connect(string serverName, string userName, string userPassword)
{
try
{
SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();
WqlConnectionManager connection = new WqlConnectionManager(namedValues);
if (System.Net.Dns.GetHostName().ToUpper() == serverName.ToUpper())
{
// Connect to local computer.
connection.Connect(serverName);
}
else
{
// Connect to remote computer.
connection.Connect(serverName, userName, userPassword);
}
return connection;
}
catch (SmsException e)
{
MessageBox.Show("Failed to connect. Error: " + e.Message);
return null;
}
catch (UnauthorizedAccessException e)
{
MessageBox.Show("Failed to authenticate. Error: " + e.Message);
return null;
}
}