我有一个表单(AddNewCamper),它包含一个文本框和一个提交按钮。在另一种形式,我试着写:
if (submit button is clicked)
do stuff
在按钮实际所在的窗口中,我创建了一个click事件。所以我想我试图在if语句中调用click事件(它与click事件所在的窗口不同)。
这就是我所拥有的:
AddNewCamper camp = new AddNewCamper();
camp.Show();
// This is where I'm confused. How do I say if this button is clicked,
// or how do i call its click event that's located in AddNewCamper?
if (camp.btnNewSubmit_Click_1())
{
Camper person = new Camper(camp.txtNewFirstName.Text);
camp.txtNewFirstName.Text = person.getName();
c.testListBox.Items.Add(person.getName());
campersFrame.Content = c;
}
答案 0 :(得分:1)
据我了解你的问题,似乎你想在提交按钮点击AddNewCamper表单时在父表单中显示一些内容。以下是一种可以做到这一点的方法。
将一个公共方法添加到ParentForm,以便在AddNewCamper点击提交后显示(或刷新)内容。
在ParentForm中
public RefreshCamper(string firstName)
{
Camper person = new Camper(camp.txtNewFirstName.Text);
camp.txtNewFirstName.Text = person.getName();
c.testListBox.Items.Add(person.getName());
campersFrame.Content = c;
// ETC...
}
将ParentForm实例传递给构造函数中的AddNewCamper表单。
private ParentForm _parentForm;
public AddNewCamper(ParentForm parentForm)
{
_parentForm = parentForm;
}
private void btnNewSubmit_Click_1()
{
_parentForm.RefreshCamper(txtNewFirstName.Text);
}
从ParentForm创建如下的AddNewCamper实例。
AddNewCamper camp = new AddNewCamper(this);
camp.Show(); // Or ShowDialog if you want Model..
或者你可以用同样的方式在ParentForm中设置一个标志,以识别点击提交按钮。
答案 1 :(得分:0)
转到按钮的事件处理程序(在visual studio的窗体视图中,在属性网格中找到click事件并双击它旁边的框,这将带你到它[或创建它如果它尚未创建])从这里,您需要在用户按下按钮时调用您想要执行的方法。
查看您提供的代码,我假设您要做的是等待if语句,直到用户按下按钮。不幸的是,除非这个代码在一个单独的线程上,如果你要等待用户按下按钮,程序将挂起。相反,当用户按下按钮时,你必须弄清楚你想要发生什么,把它放在一个方法中,并让按钮事件处理程序调用该方法。
答案 2 :(得分:0)
如果您有“阵营”表单,请将引用传递给父表单,如下所示:
camp.Show(this);
然后,当有人点击“营地”表单的提交按钮时,您可以使用所有者变量引用父表单,以便在该表单上执行您想要的操作:
((ParentForm)owner).SomeMethod(parametersToPassToParentForm);