你不要想象成一个一个的窗口,而把他们都当作对象来对待, 问题就简单了!可以考虑实现 public 属性来设定, 然后另一个对象直接可以读取到他的数据。

解决方案 »

  1.   

    用Singleton模式,这样你创建的Form1永远都是同一个对象:
    public class Form1 : System.Windows.Forms.Form
    {
        public static Form1 form1 = new Form1();    public static Form1 Create()
        {
            return form1;
        }    //....
    }
    创建Form1的实例的时候不要调用它的构造函数,只调用Create():
        Form1 form1 = Form1.Create();
      

  2.   

    这个可能还要改一下:
    public static Form1 Create()
    {
        if (!form1.Created)
        {
            form1 = new Form1();
        }
        return form1;
    }
      

  3.   

    haokaka(夏卡朋) ( ) :如果form1还没创建出来的话可以访问form1.Creted吗?可以用代理的方法。就像很多对话框上有一个 应用 按钮一样。form2上面调用form1上的函数。
      

  4.   

    Form1为主窗体,在Form1增加如下代码:
        private void button1_Click(object sender, System.EventArgs e)
        {
          Form2 fm = new Form2();
          fm.Owner = this;
          fm.Show();
        }    public void settext( string s )
        {
          textBox1.Text = s;
        }Form2为查找窗体,我用一个ListBox代替DataGrid:
        private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
          ((Form1)this.Owner).settext( listBox1.SelectedIndex.ToString() );
        }测试通过。这么做的效果有点类似于.NET编辑环境中的“查找框”。
      

  5.   

    给你的显示详细信息的窗体重载一个构造函数
    public Form1(DataRow dr)
    {
       
    //在创建完窗体上的控件后显示DataRow的信息
    }在你打开这个窗口的时候把DataGrid中选择的DataRow传进来
      

  6.   

    对,要用对像的观点去看待。你在form2中建立一个变量实例为form1,然后就可以在form1中操作fomr2了。所有的现视都用一个实例。
      

  7.   


    保留原来的窗体实例,再次使用只需
    frm.Activate();请可以了。如果没有保存,那就遍历查找。
      

  8.   

    xuhx(一觉亮天):
    public static Form1 form1 = new Form1();
    form1早就在这一句声明为静态变量而且初始化过了
      

  9.   

    大家看我这样做行不行,我是用VB。NET的
    1、关于FORM1,我想采用 haokaka(夏卡朋) 的方法,因为一个对象毕竟是让人愉快的,但我
    Public Class Form1
        Inherits System.Windows.Forms.Form#Region " Windows 窗体设计器生成的代码 "    Public Static Form1 As Form1 = New Form1‘“static”在成员变量中声名无效。
        Public Static Function Create()’方法不能声明为“static”        Return Form1    End Function
        Public Sub New()MSDN中提示仅可以在过程级使用 Static。这意味着可以在过程或过程的块内(但不是在类或模块级)声明静态变量。2、传递数值我考虑用inelm(木野狐) 的 public 属性,这个方法看起来很不错。
    3、但我还是没法在用户查找上双击后,直接显示FORM1,并且运行我的代码。重新写构造函数不好,因为我不想关了FORM1,再开一个FORM1。这里面产生了另一个问题:form1既然是类,那程序运行时的实例名是什么?我怎样才能把FORM1变成PUBLIC或STATIC的?不会再给整个程序加一个启动模块吧,在里面声明?
      

  10.   

    问个很笨的问题:如果接版主以上的问题,form2中再建个新窗体form3,那么form3上的一个textbox的值又如何值给主窗体?