C#消息框和Visual Basic输入框焦点

时间:2014-05-01 14:02:16

标签: c# vba focus

我有一个需要从用户那里获取输入的C#程序(通过InputBox)。处理信息并将结果作为消息框提供。然后重复该过程,直到用户点击"取消" InputBox上的按钮。

为了实现这一点,我在输入框中添加了对Visual Basic的引用。结果我使用C#MessageBox.show()。

现在我的问题是关注输入框/消息框。起初,InputBox具有焦点,并且第一个MessageBox结果未处于焦点(运行此程序的外部程序具有焦点),其余的MessageBoxes具有焦点,直到我单击取消。我已经在消息框中实现了MessageBoxOptions.DefaultDesktopOnly选项,现在我的问题是第二个InputBox(以及之后的所有其他选项)失去了焦点。

有人能为这个焦点问题提供解决方案吗? (或者做正确的事情)

谢谢。

1 个答案:

答案 0 :(得分:1)

离开我的头顶,但这应该在球场....

不要使用VB6,创建一个名为frmInput的新表单。在属性窗格中将它的边框类型设置为相当大的工具提示。

添加一个包含2列和2行的布局表,在左列中放置一个标签,在右列中放置一个文本框。将文本框设置为左,上,右锚,使其填充宽度。

在第2行合并列并添加两个按钮,一个名为btnOK,另一个名为btnCancel。现在为Accept / Cancel设置Form属性。将Accept设置为btnOK,将Cancel设置为btnCancel。

在后面的代码中添加一个类型为字符串的Property Called Label和另一个名为Value类型的字符串。

将构造函数设置为接受两个参数:Message和Value。

现在为txtValue的TextChanged事件添加一个事件处理程序。让它用txtValue.txt更新值

现在为btnOK和btnCancel添加事件处理程序。

在btnCancel_Click中设置this.DialogResult = DialogResult.Cancel; this.Close(); 在btnOK_Click中设置this.DialogResult = DialogResult.OK; this.Close();

现在使用它,就像

frmInput inputBox = new frmInput("Please enter your First Name:", string.Empty);
DialogResult result = inputBox.ShowDialog();
if (result == DialogResult.OK){
  //cool you entered something and clicked ok
  string firstName = inputBox.Value;
} else {
  //you canceled :(
}