从另一个表单调用一个表单的事件/方法而不重新打开表单

时间:2015-03-14 05:54:12

标签: c# forms events

' Form1中'和' form2'在mdi开放。当我按下' form1'它应该调用evevt或' form2'的方法,例如喜欢'复选框'选中,刷新网格 因为我有form2(子形式)的代码:

public partial class Form2: Form
{
    private Form1 Form1_Obj1;
    public Form2(Form1 Form1_Obj2)
    {
        InitializeComponent();
        Form1_Obj1 = Form1_Obj2;
    }
    public Form2()
    {
        InitializeComponent();

    }

从form1调用事件我有代码

Form2 obj=new Form2(this);
obj1.chkSortPlace.Checked = true;
              or         
obj1.chkSortPlace_CheckedChanged(null, null);

问题是事件是调用但事件中的代码ieassign数据源到gridview不会发生。它不会给出错误但结果不是显示网格不刷新

2 个答案:

答案 0 :(得分:2)

在c#.Net中调用某些其他形式的方法的一个技巧是使用Application.OpenForms这里是一个示例代码

    foreach (Form frm in Application.OpenForms)  
            {  
                if (frm is Form2)
                 {
                     //Put your code here.
                 } 
            }  

答案 1 :(得分:0)

编辑:改变了答案,因为我误解了OP正在尝试做什么。

您无法操纵chkSortPlace的原因是默认情况下,您添加到表单的所有控件都标记为private

转到Form1,右键单击它,选择"查看代码"并添加以下内容:

public bool SortPlaceChecked 
{
    get { return chkSortPlace.Checked; }
    set { chkSortPlace.Checked = value; }
}

然后,当您想要从其他表单更改chkSortPlace的状态时,只需使用您在上面添加的公共属性。