调用按钮单击事件方法

时间:2011-09-29 23:16:30

标签: c# .net wpf visual-studio event-handling

我有一个表单(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;
}

3 个答案:

答案 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);