當前位置:首頁 » 文件傳輸 » 窗戶控制項怎麼訪問
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

窗戶控制項怎麼訪問

發布時間: 2022-07-01 13:43:18

A. C#中如何在一個類里訪問主窗體中的控制項

在C#中,直接在子線程中對窗體上的控制項操作是會出現異常,這是由於子線程和運行窗體的線程是不同的空間,因此想要在子線程來操作窗體上的控制項,是不可能簡單的通過控制項對象名來操作,但不是說不能進行操作,微軟提供了Invoke的方法,其作用就是讓子線程告訴窗體線程來完成相應的控制項操作。

要實現該功能,有兩種方法可以選擇:

1、在程序初始化的時候對要操作的控制項設置下面的屬性:

System.Windows.Forms.Control. = false;

這樣,系統就不會再拋出上面所說的這個錯誤了。

從實質上說,該方法是通過採用取消線程安全保護模式的方式實現的,所以不建議採用。

2、基本思路如下:

把想對另一線程中的控制項實施的操作放到一個函數中,然後使用delegate代理那個函數,並且在那個函數中加入一個判斷,用InvokeRequired 來判斷調用這個函數的線程是否和控制項線程處於同一線程中,如果是則直接執行對控制項的操作,否則利用該控制項的Invoke或BeginInvoke方法來執行這個代理。示例代碼如下:

點擊[開始]按鈕,程序開啟一個新的線程,不斷向列表中添加新的數據,而同時不會影響主界面對其它控制項(例如:文本框)的響應。

B. c#子線程如何訪問子窗體中的控制項

控制項聲明成public
然後得到窗體的引用,直接可以訪問。如果窗體不是在子線程中創建的,需要使用Invoke來訪問。

C. c#怎麼訪問另一個窗體控制項

MainForm是在Main函數中啟動的?From1又是怎樣實例化的?
如果MainFrom是在Main函數中啟動的,它就已經new了一個對象實例了,
然後在Form1中
再new
MainForm()
就是另外一個對象實例,不是同一個實例,
所以不行。

D. 在C#中如何用主窗口的控制項控制子窗口的控制項,子窗口(Win1)如何訪問主窗口(Form1)的控制項

這個方法很多,比如說簡單點的,先在你主窗口裡聲明一個變數
public static Form1 thisInstance = null;
然後在主窗口的load事件里
thisInstance = this;
之後在主窗口裡加個方法
public string test()
{
return comboBox1.Text + comboBox2.Text;
}
之後在子窗口裡就可以用比如MessageBox.Show(Form1.thisInstance.test()); 這種來調用這個test方法了,當然如果你要做其它的操作,比如控制主窗體控制項,也可以用這種方法

E. 如何在一個窗口中訪問另一個窗口的控制項

如何在一個窗口中訪問另一個窗口的控制項
不可能不能改的。舉個例子啊。
主界面Form1,上面加個按鈕,點擊後開打Form2,並且給form2中的textBox1賦值
你在創建form2的時候把 textBox1的Modirers屬性改性 public

Form2 form2 = new Form2();
form2.textBox1.Text = "abc";
form2.ShowDialog();

運行程序點擊按鈕,彈出 form2,textbox1 裡面顯示的abc.

F. WPF的用戶控制項怎麼訪問主窗體的控制項求高手

我有一個用戶控制項,用戶控制項被動態載入到主窗體(frm_Manage)里。我想當用戶控制項被點擊 後就清空主窗體里Grid 控制項里的所有子控制項。 private void lbl_MenuName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ //frm_Manage 為主窗體,Grid_MenuChildren 為主窗體的一個控制項 var frm = (this.Parent as frm_Manage); frm.Grid_MenuChildren.Children.Clear();} 上面這樣寫的話會報錯:frm 為null。 ------解決方案--------------------------------------------------------使用事件。 主窗口響應事件,把值傳給控制項。 ------解決方案-------------------------------------------------------- 呃,你把UserControl 放MainWindow 里不就結了。 WPF 的話更建議用數據驅動的思想設計程序。 ------解決方案-------------------------------------------------------- 響應事件的方法比較簡單。 用戶控制項定義好了,在主窗體里完全可以把用戶控制項當作一個按鈕來用。 // #用戶控制項// 定義 public event EventHandler click; // 被點擊時,傳遞點擊事件給外部 if (null != click) click(null, null);// #主窗體 // 用戶控制項的點擊事件 userControl.click += (us, ue) = { MessageBox.Show( 用戶控制項被點擊 ); }; ------解決方案-------------------------------------------------------- 實在不行你就給usercontrol 寫個SetParent 的方法 初始化的時候調用下 把父窗口傳遞進 去 然後用就是了這樣基本上可以解決你的問題 但是不是推薦的做法

G. C#訪問其他窗體控制項的方法

先把要調用父窗體的變數或控制項改為public

父窗體:
Form2 f = new Form2();
f.Owner = this;
f.ShowDialog();
子窗體:
Form1 r = new Form1()//在子窗體(Form2)中定義
r = (Form1)this.Owner;
r.(.....)();

H. C# 子窗體怎麼訪問MDI父窗體中的控制項

首先父窗體中的DataGridView的訪問許可權要設置為internal或者public子窗體中按鈕:(假設父窗體為Form1,通過子窗體按鈕事件讓父窗體的一個TextBox對象的值改變)Form1
fm1
=
(Form1)this.MdiParent;//獲得子窗體的父窗體(Form類型),
//要強制轉換為自定義的父窗體Form1
fm1.textBox1.Text
=
"hh";//然後改變父窗體控制項的值供參考~

I. c# 類訪問窗體控制項

先實例化要調用的窗體類,再調用(把textbox1這個變數改成public,默認情況下是private)
new classseting().textbox1.text就行了
classseting這個類要放在同一個命名空間中啊,也要public啊