我需要以编程方式单击对话框上的“确定”按钮。我已经制作了一个片段,无需单击对话框。我知道理论上不需要,但出于某种原因它只有在您单击某些功能的“确定”时才有效。
片段1:
ConnPropsForm propsForm = new ConnPropsForm();
editOutput.Text = "";
propsForm.editUsername.Text = User;
propsForm.editPassword.Text = Password;
propsForm.editAddress.Text = _HOST;
propsForm.editPort.Value = Convert.ToInt32(_PORT);
propsForm.txtPrivateKey.Text = string.Empty;
propsForm.txtPrivateKeyPassword.Text = string.Empty;
propsForm.txtTrustedKeys.Text = string.Empty;
client.Username = propsForm.editUsername.Text;
client.Password = propsForm.editPassword.Text;
client.TrustedKeysFile = propsForm.txtTrustedKeys.Text;
代码片段 1 只是设置对话框。这里没什么特别的
片段2:
if (propsForm.ShowDialog(this) == DialogResult.OK)
{
editOutput.Text = "";
client.Username = propsForm.editUsername.Text;
client.Password = propsForm.editPassword.Text;
if (propsForm.txtPrivateKey.Text != "")
{
try
{
Sshkeymanager keymanager = new Sshkeymanager();
keymanager.ImportFromFile(propsForm.txtPrivateKey.Text, propsForm.txtPrivateKeyPassword.Text);
client.Key = keymanager.Key;
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
}
client.TrustedKeysFile = propsForm.txtTrustedKeys.Text;
try
{
client.Connect(propsForm.editAddress.Text, (int)propsForm.editPort.Value);
LoadRoot();
UpdateControls();
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
}
片段 2 就是神奇之处。我想测试一下“单击“确定”是否会有所不同。目前正在对我正在构建的机器人的问题进行故障排除。如果您想知道的话。机器人的工作实际上是每 30 天更新一次密码。在完美的世界中,我不需要对话框,也不需要以编程方式单击“确定”按钮,但 IT 之神现在对我很生气。我想过做一个循环来遍历每个控件,直到找到“btnOk”按钮,但我希望有更好的方法.
在 Winforms 中,如果您可以直接访问运行该按钮的按钮,则可以执行以下操作:
btnOk.PerformClick();