在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以
在c#中如何实现

解决方案 »

  1.   

    首先是MainFrm窗体,在MainFrm窗体中,拖一个ListBox控件即可,MainFrm.cs的代码如下:
    下面是对应的C#代码,MainFrm.cs:
    public partial class MainFrm: Form//引用Middle类
    {
      private void MainFrm _Load(object sender, EventArgs e)//窗体的加载事件
      {
        Middle.sendEvent += new Middle.SendMessage(this.DoMethod);//把方法注册到时间里
      }
      public void DoMethod(string[] getstr)
      {
        //你要设置的属性
      }
    }
    ChildFrm.cs:
    public partial class ChildFrm: Form//引用Middle类
    {
      public ChildFrm ()
      {
        InitializeComponent();
      }
      private void btnAdd_Click(object sender, EventArgs e)
      {
        strInfo[] = textBox3 内容+textBox4内容。。    Middle.DoSendMessage(你要改的内容strInfo);//触发事件
     
      }
    }
    Middle.cs:
    public static class Middle//
    {
      public delegate void SendMessage(string[] str);
      public static event SendMessage sendEvent;
      public static void DoSendMessage(string[] str)
      {
        sendEvent(str);
      }
      

  2.   

    通过工具栏拖到VS设计器上 该控件的默认访问性是protected 你把改成public 即可在其他窗体中 使用~~~
      

  3.   

    1楼是定义了个共有方法公开了私有/受保护对象
    2楼直接公开了私有/受保护对象欲解决不同线程问题,你可以使用1楼或者直接invoke
      

  4.   

    public class form1
    {
        Form2 frm = new Form2();
        public form1()
        {
        }    // 将Form2当作一个对象传递给Form1
        public form1(Form2 frm)
        {
           this.frm = frm;
        }
    }
    同时,把Form2的textbox1 的属性设置成public 那样的话就可以用 Form2的textbox1了, frm.textbox1.text
      

  5.   

    补充:必须要把Form2当作一个对象传递给Form1
      

  6.   

    C#和VB的FORM在概念上完全不同的,在VB里,所有的Form等于是已实例化的全局对象,所以任何地方都可以调用form,如果在C#里要做到这样,可以把form实例化的全局变量,然后再按2楼做法就O了...