【发布时间】:2016-01-13 00:20:22
【问题描述】:
所以问题来了,我想制作一个输入对话框,当单击主框架中的按钮时,它会触发输入对话框。我们可以在对话框中输入文字,然后在输入对话框中点击“添加”按钮,这样主框架上的文本框就可以显示我刚刚输入的字符串了。但是,我目前面临这样做的困难。因为对话框和主框架是两个模块,这意味着当我点击主框架上的按钮触发输入对话框时,它不能等到我输入字符串,并且按钮事件处理程序完成它们的工作,所以它永远无法阅读我的输入。无论如何,这是我的代码:
/* some code */
// add first name and last name
private void addButton_Click(object sender, EventArgs e)
{
Add add = new Add(); // declare a Add object
add.Visible = true; // show the Add frame
if (add.isOK)
{
firstName = add.getFirstName();
lastName = add.getLastName();
textArea.Text = "First Name: " + firstName + "\r\n"; // textArea is a multiple line textbox
textArea.Text += "Last Name: " + lastName;
}
}
/* some code */
上方是触发添加对象(输入对话框)的主框架上的添加按钮。这是我的 Add 类:
namespace DatabaseToAPI
{
public partial class Add : Form
{
private string firstName;
private string lastName;
public bool isOK = false; // to check if name is provided
public Add()
{
InitializeComponent();
this.Visible = false; // only become visible when the main form's Add button is clicked
}
public string getFirstName()
{
return firstName; // return the first name
}
public string getLastName()
{
return lastName; // return the last name
}
// Add button event handler
private void addButton_Click(object sender, EventArgs e)
{
if (firstNameBox.Text != "" && lastNameBox.Text != "") // if name is provided
{
firstName = firstNameBox.Text;
lastName = lastNameBox.Text;
isOK = true; // name has provided
this.Close();
}
else
{
MessageBox.Show("Please provide both first name and last name", "Sorry", MessageBoxButtons.OK);
}
}
private void cancelButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
如您所见,Add 类基本上就像一个输入对话框,当在主窗体上单击 Add 按钮时,会出现 Add 窗体。唯一的问题是主框架上的输入对话框触发按钮的事件处理程序不能等到我输入名称并单击按钮表示我完成,它只是简单地通过代码而不等待 Add 类完成他们工作。我怎样才能让主窗体知道我何时添加名称以便他们可以阅读我输入的文本?
【问题讨论】:
-
文本框中是否出现
First Name:&Last Name:?还是只是空白? -
似乎有问题的是你有两个 addButton_Click()...
-
哦,我明白了 - 你实际上并没有将
Add显示为对话框,所以当if (add.isOK)执行isOK时是false。 -
Java 方法命名约定是什么? :-p
-
您必须将
add.Visible = true;替换为add.ShowDialog();