窗体A窗体B
窗体B上一个按钮,点击是将窗体A的颜色数据保存起来问? 怎么在点了窗体B的按钮后,更新窗体A的颜色的配置委托?多线程?怎么实现

解决方案 »

  1.   

    简单点的
    使用委托//窗体B的开头部分加如下代码,放在命名空间和类之间,也就是放在类定义外面
    //声明委托,参数(object sender )可以不要,这里放上是便于扩展
    public delegate void DoSomeHandler( object sender );//窗体B中加入如下部分,在窗体B(class)的定义内部
    //定义委托
    public DoSomeHandler DoSome;//窗体B的按钮事件代码如下,如果
            private void button1_Click( object sender, EventArgs e )
            {
                if ( DoSome != null )
                {
                    DoSome( this );
                }
            }//窗体A中有如下代码,在里面添加你要处理颜色的代码,具体委托的代码
            private void ProcessColor( object sender )
            {
                MessageBox.Show( "处理颜色" );
            }//窗体A中显示窗体B的代码如下,此时在窗体B中单击按钮,将触发上面的ProcessColor中的代码
            private void btnOK_Click( object sender, EventArgs e )
            {
                窗体B f = new 窗体B();
                f.DoSome = new DoSomeHandler( ProcessColor );
                f.Show();  //此处也可为ShowDialog
            }
      

  2.   

    贴一下完整的吧,两个窗体各放一个button
    窗体Anamespace Test1
    {
        public partial class Form1 : Form
        {        public Form1()
            {
                InitializeComponent();        }        private void btnOK_Click( object sender, EventArgs e )
            {
                Form2 f = new Form2();
                f.DoSome = new DoSomeHandler( ProcessColor );
                f.ShowDialog();
            }        private void ProcessColor( object sender )
            {
                MessageBox.Show( "处理颜色" );
            }
        }}
    窗体Bnamespace Test1
    {
        public delegate void DoSomeHandler( object sender );    public partial class Form2 : Form
        {
            public DoSomeHandler DoSome;        public Form2()
            {
                InitializeComponent();
            }        private void button1_Click( object sender, EventArgs e )
            {
                if ( DoSome != null )
                {
                    DoSome( this );
                }
            }
        }
    }
      

  3.   

    这个方法里面的代码你要自己写啊,我用MessageBox.Show只是一个示例
    你在窗体B中点击按钮有没有弹出 处理颜色 的对话框呢,如果是
    你要做的是你保存颜色或者更新颜色
    private void ProcessColor( object sender )
            {
                MessageBox.Show( "处理颜色" );
            }
      

  4.   

    1 窗体A:绑定数据源方法public void GetKeyWords(){...}
    2 点击添加按钮:实例化窗体B:formB form=new formB(this);
                form.mydelegatge += new form.bindGridViewList(GetKeyWords);
                form.ShowDialog(this);
    3 窗体B的类中定义委托:public delegate void bindGridViewList();
            public bindGridViewList mydelegatge;
    点击保存按钮:
    if (mydelegatge != null)
                {
                    this.mydelegatge();
                    this.Close();
                }
                else
                    this.Close();
      

  5.   

    给b窗体写个构造函数,把a窗体传过去不就得了,在b中想怎么改a就怎么改。
      

  6.   

    你要自己将数据发送给from2 人家只是show了一下信息