可以手动将子窗体中的datagrid控件设置成public

解决方案 »

  1.   

    参考:
    http://dotnet.aspx.cc/ShowDetail.aspx?id=B8C64B14-5A2C-462F-8097-2726D7D15C1D
      

  2.   

    谢谢楼上两位!
    to wnlovezxm:我也考虑过这个办法,但是我得程序中可能要多次多数据库进行搜索,如果每次都备份的话,有可能造成对系统资源的过度占用。我认为这不是一个最好的实践。
    to 大象:现在的问题是每次搜索之后new的那个子窗体在其他代码部分就没办法访问,因为它是个局部变量(我是在一个“搜索”按钮的click事件中创建的子窗体),因此,只把datagrid设置成public好像不太管用吧?
    还有没有其他高手啊?欢迎踊跃发表意见:)
      

  3.   

    大象的方法是可以行得通的哈,你把你的一部分源代码,拿出来看看!我做的项目中的将新生成窗口的控件设置成PUBLIC就可以访问哈!
      

  4.   

    to 小华:部分源代码如下,请指教:)
    Mainform
    private void button_search_click(...)
    {
      Form_child child=new Form_child();
      ....
    }
    private void button_others_click(...)
    {
      //在此处需要取出child中datagrid数据,但是没办法访问上面“搜索”控件的click事件中生成的子窗体;
    }
      

  5.   

    C# 的窗体单件模式,参考例子:
    private static TMyForm _instance = null;
    protected TMyForm()   //改变窗体的默认初始化为私有
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    }//该方法保证产生唯一的实例
    public static TMyForm Instance()
    {
    if (_instance == null)
    {
    _instance = new TMyForm();
    }
    return _instance;
    }
    调用它时,如下:TMyForm myForm1 = TMyForm.Instance();其他方法想同。