private void F_Role_Activated(object sender, EventArgs e)
        {           
            MyDS_Grid_2 = MyDataClass.getDataSet("select roleId as 编号,roleName as 角色名 from sxRole", "sxRole");
            dataGridView1.DataSource = MyDS_Grid_2.Tables[0];
        }
我想每次退出另个窗体时都刷新这个窗体中datagrilview的数据,但是用Activated事件却只是加载此窗体的时候执行了一次,我退出调用的窗体(ShowDialog)回来时都不执行,找不到问题所在。      哪位高手帮忙解答下。

解决方案 »

  1.   

    Activated事件在窗体被激活时产生,也就是在重新获得焦点时触发
                    if (this.Focused == true)
                        this.Invalidate();
                    else
                        this.Focus();
      

  2.   

    模式窗体属于当前窗体的子窗体,从Show到Hide整个过程父窗体并没有失去焦点,当然不会引发Deactivate事件更不会引发Activated事件...
      

  3.   

    这样判断:在子窗口关闭后调用刷新代码Form 子窗体 = new 子窗体();
    if(子窗体.ShowDialog() == DialogResult.OK)
    {
        // 这里更新。。
    }// 注意在子窗体的关闭位置:this.DialogResult  = DialogResult.OK
    // 这样对话框关闭的就可以返回OK,用作主窗口的判断了,如果不满足条件可以返回DialogResult。Cancel
      

  4.   

    private void tool_RoleAdd_Click(object sender, EventArgs e)
            {
                sx.Show.RoleAdd FRoleAdd = new RoleAdd();
                FRoleAdd.ShowDialog(this);
                if (FRoleAdd.ShowDialog() == DialogResult.OK)
                {
                    //更新           
                }
            }这是主窗体调用代码
     private void button1_Click(object sender, EventArgs e)
            {
                ……………        
             if ((int)this.Tag == 1)
                {
                    MyDataClass.getsqlcom("insert into sxRole(roleId,roleName) values(" + AutoID + ",'" + textBox1.Text + "')");;               
                }    
          else
                {
                    MyDataClass.getsqlcom("update sxRole set roleName='" + textBox1.Text + "' where roleId='" + ModelClass.MyModel.Role_ID + "'");               
                }
                this.DialogResult = DialogResult.OK;
                this.Close();  }子窗体保存代码,先前的问题解决了,但是新问题子窗体点保存后子窗体跳了一下没有关闭。也就是this.close()没有执行啊。
      

  5.   

    你的代码中调用了再次FRoleAdd 
      sx.Show.RoleAdd FRoleAdd = new RoleAdd();
      FRoleAdd.ShowDialog(this);
      if (FRoleAdd.ShowDialog() == DialogResult.OK)
      

  6.   

    它不关闭我直接用按钮调用formclosing事件搞定了。功能也基本实现了。