簡體   English   中英

在不重新打開表單的情況下從另一表單調用一種表單的事件/方法

[英]Calling event/methods of one form from another form without reopening form

“ Form1”和“ form2”在mdi中打開。 當我在“ form1”中按下按鈕時,它應該調用evevt或“ form2”的方法,例如,選中“ checkbox”,刷新網格以獲取我具有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);

問題是事件被調用,但事件即代碼未發生,即未將數據源分配給gridview。它不會給出錯誤,但結果是未顯示網格未刷新

在c#.Net中調用其他形式的方法的技巧是使用Application.OpenForms這里是示例代碼

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

編輯:更改答案,因為我誤解了OP試圖做的事情。

您無法操作chkSortPlace的原因是,默認情況下,您添加到表單的所有控件都標記為private

轉到Form1,右鍵單擊它,選擇“查看代碼”並添加以下內容:

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

然后,當您想從其他表單更改chkSortPlace的狀態時,只需使用上面添加的公共屬性即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM