您的位置:首页 > 其它

【WPF】窗体页面间传值总结

2017-06-20 11:37 106 查看
以下方法可以根据需求进行变更,

Demo1:子窗体返回值给主窗体



From1

private
void
button1_Click(object
sender, EventArgs
e)

{

Form2
frm = new
Form2();

//注册事件

frm.TransfEvent += frm_TransfEvent;

frm.ShowDialog();

}

//事件处理方法

void
frm_TransfEvent(string
value)

{

textBox1.Text = value;

}

Form2:

//声明委托 和 事件

public delegate
void
TransfDelegate(String
value);

public
event
TransfDelegate
TransfEvent;

private
void
button1_Click(object
sender, EventArgs
e)

{

TransfEvent(textBox1.Text);//触发事件

this.Close();

}

===================================================================================================================================

Demo2:主窗体通过触发事件传值给子窗体



Form1:

private
void
btn_Pass(object
sender, RoutedEventArgs
e){

Demo d =
new
Demo("想要传输的数据");

d.WindowStartupLocation =
WindowStartupLocation.CenterScreen;
//使窗口位置在最中心、

d.Owner =
this;

d.Show();

}

Form2:

public
Window2(string
str){

InitializeComponent();

show(str);

}

public
void
show(string
s)

{

textbox1.Text = s;

}

=============================================================================================

Demo3:主窗体传输给子窗体(实时)

参考例子:http://www.cnblogs.com/codeToUp/p/5371062.html



Form1

private
void
Button_Click(object
sender, RoutedEventArgs
e){

Win4
detail = new
Win4();

SendMsgEvent += detail.MainFormTxt;//为子窗体注册事件,在子窗体中事件处理代码中设置文本

detail.Owner
= this;

detail.Show();

}

private
void
ListBox_SelectionChanged(object
sender, SelectionChangedEventArgs
e)

{

SendMsgEvent(this,
new
Class1()
{ Text = "传输的值"
});

}

Form2

internal
void
MainFormTxtChanedDetailRequest(Object
sender, EventArgs
e)

{

Class1
arg = e as
Class1;
//取到主窗体的传来的文本

textbox2.Text= arg.Text;

}

Class1:

public
class
Class1
: EventArgs

{

public
string
Text { get;
set;
}

}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: