none
如何在一个自建类中访问已经实例化的winForm控件 RRS feed

  • 问题

  • 具体问题是这样的:

    自建了一个类用来做操作层;

    在这个类中写了一个方法MyDataBinding();

    我希望通过此方法来访问并操作已经实例化的MainForm中的控件(如textbox,DataGridView等)并对其进行绑定操作;

    我所遇到的困难是无法对上述MainForm中的控件进行访问和操作;(所使用的语言为C#)

    请高人给予指导,谢谢

    2011年8月17日 6:43

答案

  • 默认的情况下,产生的控件类型都是私有的,外部是不能看到的。

    如下图:

    如果要从别的类中访问它的控件,就要改变它们的访问类型,如public 等,

    我修改了textBox1的访问属性:

     public System.Windows.Forms.TextBox textBox1;
    

    然后在另外的一个类的方法去访问,如下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    namespace WindowsFormsApplication17
    {
      class Class1
      {
        Form1 f = new Form1();
        public void MydataBinding(Form1 form)
        {
          this.f = form;
          string str = f.textBox1.Text;
          
        }
    
      }
    }
    
    

    截图给你看:

     


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 changer168 2011年8月19日 2:25
    2011年8月18日 7:21
    版主

全部回复

  • 具体问题是这样的:

    自建了一个类用来做操作层;

    在这个类中写了一个方法MyDataBinding();

    我希望通过此方法来访问并操作已经实例化的MainForm中的控件(如textbox,DataGridView等)并对其进行绑定操作;

    我所遇到的困难是无法对上述MainForm中的控件进行访问和操作;(所使用的语言为C#)

    请高人给予指导,谢谢

    2011年8月17日 3:32
  • 可以将textbox,DataGridView等的修饰符修改成public,这样外部就可以访问了
    2011年8月17日 15:47
  • 默认的情况下,产生的控件类型都是私有的,外部是不能看到的。

    如下图:

    如果要从别的类中访问它的控件,就要改变它们的访问类型,如public 等,

    我修改了textBox1的访问属性:

     public System.Windows.Forms.TextBox textBox1;
    

    然后在另外的一个类的方法去访问,如下代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    namespace WindowsFormsApplication17
    {
      class Class1
      {
        Form1 f = new Form1();
        public void MydataBinding(Form1 form)
        {
          this.f = form;
          string str = f.textBox1.Text;
          
        }
    
      }
    }
    
    

    截图给你看:

     


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 changer168 2011年8月19日 2:25
    2011年8月18日 7:21
    版主