我的问题在于,我正在开发一个小应用程序,以在SCCM 2012服务器上执行一些操作。使用Windows窗体传递对象
目前它只是创建,删除和移动文件夹。
我想要做的是有一个窗体,你登录。这已经完成。从这里你应该选择你想要做什么样的操作(例如移动或删除)。然后会弹出一个新的表单,并在这里做你的魔力。
这一切都很完美,但是,我认为我没有做到“正确”的方式。现在,我将连接对象传递给构造函数以创建所有创建的窗体,并且这些窗体是相互创建的。是否有意义?
我想要做的是拥有某种控制类,从创建登录表单的位置决定是否应该隐藏或显示,并将连接对象传递到我想要的位置,当它已被返回/保存。
我的问题是,当我创建表单时,所有的控制流都转到该表单。如果我可以在控制类中保留流,并且从这里控制是否根据成功登录来隐藏/显示表单,我宁愿选择。
我希望你能理解我的问题,并可能有解决方案吗?
这里是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;
}
}
我想连接方法应该是在你的窗口2并调用它(这取决于什么ü想做的事)后,1)在表单加载事件或2)用户交互(用户想要做什么)。也应该将连接放置在不同的类(访问层)中。 – terrybozzio
你可以通过它的声音将它作为一个单身人士 – Sayse