none
WinForm如何把一个窗体接收的事件传递给另一个被隐藏的窗体?

    问题

  • 有2个c#的WinForm窗体,一个是在前面的,接收各种事件,如鼠标的点击和键盘的字符输入等。需要把这些鼠标和键盘的事件传给另一个隐藏的b窗体,由于b窗体不能接收焦点,所以无法使用mouse_event 的办法。

    哪位高手给指点一下啊?

    2017年3月6日 7:20

全部回复

  • 你可以自己写一个事件,隐藏的窗体订阅显示窗体的事件

    或者直接调用隐藏窗体的方法


    please verify my account


    • 已编辑 lctk 2017年3月6日 7:42
    2017年3月6日 7:41
  • 隐藏的窗体中是一个第3方控件,比如WebBrowser,所以需要模拟用户在前面窗体中的事件。
    2017年3月6日 9:11
  • 窗体也是一个类(实例),把b窗体当成前面的窗体的引用来使用,指向现有的(前面的)窗体

    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年3月7日 0:34
  • Hi,

    感谢你在MSDN论坛发帖。

    你可以先建立一个简单工程,在两个form之间使用委托来传递信息。

    下面是我建立的一个工程部分代码,一个form想另外一个form传递字符串。

    public delegate void _del(string str);
    
        public partial class Form2 : Form
        {
            public _del del;
            public Form2(_del d)
            {
                this.del = d;
                InitializeComponent();
             
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                del(richTextBox1.Text);
            
            }
        }


     public partial class Form1 : Form
        {
           
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 form2 = new Form2(showstring);
                 form2.Show();
            }
    
            private void showstring(string str)
            {
                
            label1.Text = str;
              
            }
    }

    当form2 点击button,text框中的字符串就会被发送到form1 中。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年3月8日 7:28
    版主