2013-05-03 34 views
1

我不知道怎麼說這個,我有3個datagridview控件(名爲datagridview1,datagridview2 & datagridview3)。我的問題是我可以連接這些控件的名稱嗎?C#中的連接控件名稱

我的意思是有沒有辦法,我可以這樣調用它:我使用的WinForms datagridview(n) or datagridview + n

在此先感謝!

+0

爲什麼你需要這樣做?如果你的建築物動態地控制着,那麼我可以指出這一點,否則就像Tim提到的那樣使用可讀的名字。 – Derek 2013-05-03 10:13:12

+3

使用與其用途相關的有意義的名稱。 – 2013-05-03 10:13:35

+0

我有3個tabpage,每個tabpage包含一個datagridview,我想調用當前tabpage中的datagridview,並且我不想每次更改tabpage時調用這些datagridview的名稱。 – NickSharp 2013-05-03 10:18:25

回答

0

我想你想要的是用動態名稱找到控件嗎?

像這樣的東西可能:

Control match = ParentControl.Controls["datagridview" + n]; 

因此,如果例如您的所有數據網格都處於了名爲 「myPanel」 單面板,那麼你可以這樣做:

DataGridView match = MyPanel.Controls["datagridview" + n] as DataGridView; 

但是,如果您的數據網格不全部屬於相同的父級控件,則可以使用以下方法找到它們:

DataGridView match = this.Controls.Find("datagridview" + n, true)[0] as DataGridView; 

注意:Controls.Find方法返回一個數組,因此您需要選擇第一個元素(假設您的控件名稱是唯一的),它也可能值得檢查數組是否有任何值,然後嘗試訪問第一個元素。


如果你想換行的功能,你可以這樣做:

public DataGridView GetDataGridViewForTabNumber(int n){ 
    Control[] matches = this.Controls.Find("datagridview" + n, true); 
    if(matches.length == 0) 
     return null; 
    return matches[0] as DataGridView; 
} 

,並調用它像這樣:

DataGridView dgv = GetDataGridViewForTabNumber(1);//gets datagridview1 

注意:這是一個如果您在運行時動態創建DataGridView控件,則該方法非常有效。但是,如果你是在設計師那裏創建它們,就像Tim說的那樣,你應該給他們一個更有意義的名字並直接引用它們。

+0

我在設計師中創建它們,我希望我的代碼變得簡單。我有3個tabpage,每個tabpage包含一個datagridview,所以我有一個變量n,該值是基於當前tabpage的,所以當tabpage改變時,變量值也會改變,我想使用像datagridview + n這樣的變量。有可能嗎? – NickSharp 2013-05-03 10:21:43

+0

@ user2061086:簡單代碼?然後,只需使用控件的名稱來訪問它,'datagridview1.CallSomething();' – musefan 2013-05-03 10:25:06

+0

@ user2061086:是的,這是可能的,我的代碼解釋說,確切地說 – musefan 2013-05-03 10:25:35

0

嘗試這個

的DataGridView DG =(DataGridView中)this.Controls.Find( 「datagridview的」 + n.ToString(),TRUE);