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

时间:2022-08-30 22:36:36
在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以
在c#中如何实现

8 个解决方案

#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


楼上的最简单
    改了就和VB里面一样

#4


1楼是定义了个共有方法公开了私有/受保护对象
2楼直接公开了私有/受保护对象

欲解决不同线程问题,你可以使用1楼或者直接invoke

#5


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

#6


补充:

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

#7


把this作为参数传进构造函数

#8


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

#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


楼上的最简单
    改了就和VB里面一样

#4


1楼是定义了个共有方法公开了私有/受保护对象
2楼直接公开了私有/受保护对象

欲解决不同线程问题,你可以使用1楼或者直接invoke

#5


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

#6


补充:

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

#7


把this作为参数传进构造函数

#8


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