从其他窗口更改按钮中的内容

时间:2014-08-05 12:01:05

标签: c# wpf button

在标题中,如何从其他窗口更改按钮中的内容。我有主窗口我想点击按钮,这个按钮打开新窗口,在这个窗口中我想点击下一个按钮,在第一个按钮中更改内容。

2 个答案:

答案 0 :(得分:1)

在父表单中将按钮修饰符属性设置为Public,在子表单中尝试以下内容:

        (this.Parent as ParentFormName).ButtonName.Text = "Your text";

答案 1 :(得分:0)

如果您不想使用绑定(也是事件驱动),您可以使用事件。在第二个窗口中,向辅助窗口添加一个事件,并在主窗口中指定一个处理程序来执行更改。 This是关于事件的非常好的教程。

创建一个公共类,以便所有内容都可以访问参数:

 public class ChangeButtonEventArgs : EventArgs
  {
    //... arguments. For instance text;
    public string NewContent;
   }

然后在辅助窗口中添加窗口类:

// this is essentially a delegate to give the form of the method
// EventHandler<SomeClass>  says the method will look like Method(object,SomeClass)
public event EventHandler<ChangeButtonEventArgs > ChangeButton;


  //This is what you will call in the secondary window to fire the event.  
  //The main window will not see this code.

    protected virtual void OnChangeButton(object sender, ChangeButtonEventArgs e)
    {
        EventHandler<ChangeButtonEventArgs > handle = ChangeButton;

        if (handle != null)
        {
            handle(this, e);
        }

    }

现在你有一个可以随时发射的事件。在主窗口中创建一个处理程序。

 //this should happen when you create the secondary window object.
 WindowObject.ChangeButton += new EventHandler<ChangeButtonEventArgs>(ChangeButtonMethodMainWindow);

private void ChangeButtonMethodMainWindow(object sender, ChangeButtonEventArgs e)
{
   Button1.Content = e.NewContent;
}

现在你需要在事情发生时在辅助窗口中激活事件,并且你希望它在主窗口中执行某些操作,你所要做的就是用你的主窗口需要的参数调用方法OnChangeButton存储在ChangeButtonEventArgs类型的对象中。

ChangeButtonEventArgs args = new ChangeButtonEventArgs();
args.NewContent = "SomeString";
OnChangeButton(this,args);