操作演示:
主窗体:
点击"打开子窗体"按钮打开另一个窗体:
子窗体中输入内容, 点击"将值传向父窗体"
下面放代码:
Main Window.xaml:
<Button Content="打开子窗体" HorizontalAlignment="Left" Height="33" Margin="228,112,0,0" VerticalAlignment="Top" Width="222" Click="Button_Click"/>
<TextBlock x:Name="ParentTb" HorizontalAlignment="Left" Height="41" Margin="228,223,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="222"/>
<Label Content="子窗体传过来的值: " HorizontalAlignment="Left" Height="41" Margin="115,223,0,0" VerticalAlignment="Top" Width="108"/>
Main Window.xaml.cs:
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
/// <summary>
/// 点击父窗体上的按钮打开子窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Button_Click(object sender, RoutedEventArgs e)
{
//实例化一个子窗体
ChildWindow child = new ChildWindow();
child.sendMessage += ReceivedMessage;
child.ShowDialog();
}
/// <summary>
/// 接收值
/// </summary>
private void ReceivedMessage(string value)
{
ParentTb.Text = value;
}
}
ChildWindow.xaml:
<TextBox x:Name="childInput" HorizontalAlignment="Left" Height="26" Margin="249,124,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="196"/>
<Label Content="传向父窗口的值:" HorizontalAlignment="Left" Height="26" Margin="139,124,0,0" VerticalAlignment="Top" Width="105"/>
<Button Content="将值传向父窗体" Click="Button_Click" HorizontalAlignment="Left" Height="29" Margin="249,197,0,0" VerticalAlignment="Top" Width="103"/>
ChildWindow.xaml.cs:
/// <summary>
/// ChildWindow.xaml 的交互逻辑
/// </summary>
public partial class ChildWindow : Window
{
// 在子窗体中声明一个委托(带string类型的参数的委托)
public delegate void SendMessage(string str);
public SendMessage sendMessage;
public ChildWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// 获取子窗体输入的值
var childText = childInput.Text;
// 通过委托将输入的值传回主窗体
sendMessage(childText);
}
}