我在子窗体中加了一个小键盘。我想在子窗体的小键盘上输入数字或字母,想在主窗体的textbox中显示。要实时更新的,有办法吗

解决方案 »

  1.   

    可以。思路:把主窗体的某个方法/字段做公开的,可以设置TextBox,然后把该主窗体对象传递给子窗体,在子窗体小键盘输入数据的事件中调用。举例:
    Form1: Form
    {
        public SetText(string text)  // 设置文本内容
        {
           textBox1.Text = text;
        }    public CallSubForm()
        {
           Form2 frm = new Form2(this);  // 创建子窗体并传递this
           frm.ShowModal();
        }
    }Form2: Form
    {
       Form mainForm;
       public Form2(Form mainForm)
       {
          this.mainForm = mianForm;  // 获得主窗体引用,可以调用其SetText了
       }
       //
    }
      

  2.   

    思路二,用委托和事件:
    主窗体FrmMain,子窗体FrmChild
    FrmMain中:
    private void RefreshTextbox(string input)
    {
        this.TextBox1.Text = this.TextBox1.Text + input;
    }
    打开子窗体代码:
    FrmChild frm = new FrmChild();
    frm.ReadKey += new Form2.ReadKeyHandle(RefreshTextbox);
    frm.Show();子窗体中:
    class FrmChild : Form
    {
        public delegate void ReadKeyHandle(string keyCode);
        public event ReadKeyHandle ReadKey;    private void 小键盘事件(object Sender, ....)
        {
            ReadKey(读取键盘的值);
        }
    }