在标题中,如何从其他窗口更改按钮中的内容。我有主窗口我想点击按钮,这个按钮打开新窗口,在这个窗口中我想点击下一个按钮,在第一个按钮中更改内容。
答案 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);