當前位置:首頁 » 密碼管理 » 訪問窗體控制項

訪問窗體控制項

發布時間: 2022-08-06 17:59:19

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

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

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

B. 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的方法 初始化的時候調用下 把父窗口傳遞進去 然後用就是了這樣基本上可以解決你的問題 但是不是推薦的做法

C. c# 在自定義類中 訪問窗體控制項,實時修改

在Form1中放入DataGridView控制項,窗體載入事件:
private void Form1_Load(object
sender, EventArgs e)
{

dataGridView1.Columns.Add("colCode",
"序號");//添加一列

Func fun = newFunc();

fun.ShowInfo(dataGridView1);
}

Func類中:
public class Func
{
public void
ShowInfo(System.Windows.Forms.DataGridView
dgv)
{
for(int i=0;i<100;i++)
{
dgv.Rows.Add(new object[] { i });

}
}
}

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

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

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

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

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

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

System.Windows.Forms.Control. = false;

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

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

2、基本思路如下:

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

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

F. WPF 怎麼訪問主窗體裡面的控制項

新窗體和主窗體不是父子關系,當然找不到。
這兩種窗體間的交互我知道的有幾種方法
1:設置子窗體的擁有者為主窗體
2:使用一個全局變數,並在變數改變通知主窗體
3:使用Prism的aggregaterg事件,子窗口發布聚合事件,主窗體接收

G. C# 子線程訪問主窗體控制項

是的,
在其他線程里,不允許調用主線程創建的控制項~!!!!
這樣做,是不安全的,因此,2.0屏蔽了這個~

樓上說的很對,用委託,具體代碼如下~:
public delegate void MyInvoke(string str);

private void button9_Click(object sender, EventArgs e)
{
//_myInvoke = new MyInvoke(SetText);
// = false;
Thread t = new Thread(new ThreadStart(fun));
t.Start();
}

private void fun()
{
//_myInvoke("dddd");
SetText("ddd");
}
private void SetText(string s)
{
if (textBox6.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText);
this.Invoke(_myInvoke, new object[] { s });
}
else
{
this.textBox6.Text = s;
}
}

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

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

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

這個採用參數傳遞的方式就能完成,StudentManage類要處理textbox1的方法含有textbox對象的參數,就能實現你的要求,窗體類只能間接訪問,不能直接訪問的

熱點內容
現在玩游戲的電腦需要什麼配置 發布:2024-04-20 17:09:57 瀏覽:195
游樂園的密碼一般為多少 發布:2024-04-20 17:09:51 瀏覽:41
興元安卓機怎麼進系統 發布:2024-04-20 17:07:16 瀏覽:806
我的世界伺服器如何放村民 發布:2024-04-20 17:05:35 瀏覽:359
手機反編譯dex 發布:2024-04-20 17:01:01 瀏覽:704
安卓怎麼設置微信拍一拍 發布:2024-04-20 16:44:48 瀏覽:569
三星3熱點密碼怎麼設置 發布:2024-04-20 16:30:52 瀏覽:579
用keil編譯顯示警告warn 發布:2024-04-20 16:27:09 瀏覽:894
訪問在哪兒 發布:2024-04-20 16:20:42 瀏覽:201
安卓手機有什麼可以把聲音改成電音的軟體 發布:2024-04-20 16:19:40 瀏覽:564