亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Windows窗體中訪問另一個窗體上的控件的最佳方法?

在Windows窗體中訪問另一個窗體上的控件的最佳方法?

C#
一只名叫tom的貓 2019-09-03 16:03:22
首先,這是一個關于使用Windows窗體的桌面應用程序的問題,而不是ASP.NET問題。我需要與其他表單上的控件進行交互。我試圖通過使用,例如,以下來訪問控件...otherForm.Controls["nameOfControl"].Visible = false;它不像我期望的那樣工作。我最終拋出了一個例外Main。但是,如果我public而不是制作控件private,我可以直接訪問它們,因為......otherForm.nameOfControl.Visible = false;但這是最好的方法嗎?是否public將其他形式的控件視為“最佳實踐”?是否有“更好”的方式訪問另一種形式的控件?進一步說明:這實際上是我提出的另一個問題的后續問題,在C#中創建“樹視圖首選項對話框”類型的界面的最佳方法?。我得到的答案非常好,解決了許多很多組織問題,這些問題在保持用戶界面簡單易用的同時兼顧了運行時和設計時。然而,它確實提出了一個輕松控制界面其他方面的問題?;旧?,我有一個根表單,它實例化了根表單中面板中的許多其他表單。因此,例如,其中一個子表單上的單選按鈕可能需要更改主,根表單上的狀態條圖標的狀態。在這種情況下,我需要子表單與父(根)表單的狀態條中的控件進行通信。(我希望這是有道理的,而不是在“誰是第一個”的方式。)
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您可以創建一個控制其可見性的屬性,而不是將控件公開:


public bool ControlIsVisible

{

     get { return control.Visible; }

     set { control.Visible = value; }

}

這將為該控件創建一個合適的訪問器,不會公開控件的整個屬性集。


查看完整回答
反對 回復 2019-09-03
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

第一個當然不起作用。表單上的控件是私有的,僅在設計時可見。


讓它全部公開也不是最好的方式。


如果我想向外界揭示某些東西(也可能意味著另一種形式),我會為它制作一個公共財產。


public Boolean nameOfControlVisible

{

    get { return this.nameOfControl.Visible; }

    set { this.nameOfControl.Visible = value; }

}

您可以使用此公共屬性隱藏或顯示控件或詢問控件當前可見性屬性:


otherForm.nameOfControlVisible = true;

您還可以公開完整控件,但我認為它太多了,您應該只在當前表單之外顯示您真正想要使用的屬性。


public ControlType nameOfControlP

{

    get { return this.nameOfControl; }

    set { this.nameOfControl = value; }

}


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關注
  • 681 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號