加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在WPF表单之间传递数据

发布时间:2020-12-16 00:06:42 所属栏目:百科 来源:网络整理
导读:form1有一个按钮btnInvoke,它调用form2. form2包含一个文本框和一个按钮btn2. 用户必须在文本框中输入数据并按btn2. 单击btn2时,form2必须将文本框数据发送到form1. 我试过传递构造函数,但我无法启动form1的新实例. 我该怎么办? 解决方法 您可以使用两种方
form1有一个按钮btnInvoke,它调用form2. form2包含一个文本框和一个按钮btn2.

用户必须在文本框中输入数据并按btn2.

单击btn2时,form2必须将文本框数据发送到form1.

我试过传递构造函数,但我无法启动form1的新实例.

我该怎么办?

解决方法

您可以使用两种方法.第一个是使用ShowDialog和一个公共方法,然后测试DialogResult是否为真,然后从方法中读取值.

if (newWindow.ShowDialog() == true)
            this.Title = newWindow.myText();

第二种方法是创建一个CustomEvent并在创建窗口中订阅它,就像这样.

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender,RoutedEventArgs e)
    {
        Window1 newWindow = new Window1();
        newWindow.RaiseCustomEvent += new EventHandler<CustomEventArgs>(newWindow_RaiseCustomEvent);
        newWindow.Show();

    }

    void newWindow_RaiseCustomEvent(object sender,CustomEventArgs e)
    {
        this.Title = e.Message;
    }
}

Window1.xaml.cs

public partial class Window1 : Window
{
    public event EventHandler<CustomEventArgs> RaiseCustomEvent;

    public Window1()
    {
        InitializeComponent();
    }
    public string myText()
    {
        return textBox1.Text;
    }
    private void button1_Click(object sender,RoutedEventArgs e)
    {

        RaiseCustomEvent(this,new CustomEventArgs(textBox1.Text));
    }
}
public class CustomEventArgs : EventArgs
{
    public CustomEventArgs(string s)
    {
        msg = s;
    }
    private string msg;
    public string Message
    {
        get { return msg; }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读