找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人伊莉需要你的贊助和支持搞笑、娛樂、精彩的影片讓你看
fc2霹靂鬼父中文3dmg 無碼無碼 ge
3d松下紗栄世紀帝國fc2 4396銀河クロア×dojo

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]關於我轉生變成史

[簡]單人房、日照一般

[繁]海賊王 航海王 11

[簡]假面騎士GOTCHARD

[繁]迷宮飯12~15-

(4月新番)[繁]轉生為
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3533|回復: 6
打印上一主題下一主題

[問題]C#如何讓控制項陣列化?[複製鏈接]

帖子
15
積分
0 點
潛水值
1358 米
跳轉到指定樓層
樓主
發表於 2015-6-17 01:27 AM|只看該作者|倒序瀏覽
以前在VB6只要複製貼上就可以讓多個控件變成陣列

在C#上不知道要怎麼做才是

還請指教
分享分享0收藏收藏0支持支持0
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
頭香
發表於 2015-6-17 09:45 PM|只看該作者
本帖最後由 rr09192084 於 2015-6-17 09:47 PM 編輯

C#沒有VB6那種複製元件可以轉成陣列的功能
但是在C#裡元件還是可以用陣列來控制的
以下我寫個範例給你參考看看
  1.         private TextBox textBox1 = new TextBox();
  2.         private TextBox textBox2 = new TextBox();
  3.         private TextBox textBox3 = new TextBox();
  4.         private TextBox textBox4 = new TextBox();
  5.         private TextBox[] textBoxes;
  6.         public Form1()
  7.         {
  8.             InitializeComponent();
  9.             textBoxes = new TextBox[] { textBox1, textBox2, textBox3, textBox4 };
  10.         }

  11.         private void Form1_Load(object sender, EventArgs e)
  12.         {
  13.             string[] txt = { "Hello!!", "How are you?", "I am fine.", "" };
  14.             for (int i = 0; i < 4; i++)
  15.             {
  16.                 //要使用元件的陣列主要是為了讓這些元件可以被迴圈作統一設計、管理與指派等動作
  17.                 //如統一為元件命名
  18.                 textBoxes[i].Name = "textBox" + (i + 1).ToString();

  19.                 //統一指定文字內容
  20.                 textBoxes[i].Text = txt[i];

  21.                 //指定元件的SIZE
  22.                 textBoxes[i].Size = new System.Drawing.Size(280, 25);

  23.                 //指定位置
  24.                 textBoxes[i].Location = new System.Drawing.Point(60, (i + 1) * 50);

  25.                 //這個指令是把該元件加入到目前的視窗裡
  26.                 this.Controls.Add(textBoxes[i]);

  27.                 //指派事件處理(前3個才有)
  28.                 if (i < 3) textBoxes[i].TextChanged += new System.EventHandler(textBox_TextChange);
  29.             }
  30.         }

  31.         //這個就是文字框異動指派處裡的函式
  32.         private void textBox_TextChange(object sender, EventArgs e)
  33.         {
  34.             TextBox txtbtn = (TextBox)sender;
  35.             //你可以所有文字框異動都做同一件事
  36.             //如在第4格文字框秀出訊息
  37.             textBoxes[3].Text = txtbtn.Name + " 內的文字被異動了!!";

  38.             //或是個別、某些作不同的事
  39.             switch (txtbtn.Name)
  40.             {
  41.                 case "textBox1":
  42.                     //文字框1異動時做哪些事
  43.                     textBoxes[3].Text += " (case 1)";
  44.                     break;
  45.                 case "textBox2": case "textBox3":
  46.                     //文字框2和3異動時做哪些事
  47.                     textBoxes[3].Text += " (case 2 or 3)";
  48.                     break;
  49.                 default:
  50.                     break;
  51.             }
  52.         }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 2Rank: 2

帖子
434
積分
325 點
潛水值
16002 米
3
發表於 2015-6-17 11:03 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
本帖最後由 vihee 於 2015-6-17 11:04 PM 編輯

voodoozip 你好
因尚不是很瞭解你的需求,不知以下是否是閣下想知道的解答

咱們可以應用Controls,來得知Form中有哪些控制件
在下會先用foreach 取得,並以List為容器並分類
程式如下
  1.             List<Button> listBtns = new List<Button>(Controls.Count);
  2.             List<TextBox> listTextboxs = new List<TextBox>(Controls.Count);
  3.             foreach (Control ctlElement in this.Controls)
  4.             {
  5.                 if (ctlElement is Button)
  6.                 {
  7.                     listBtns.Add(ctlElement as Button);
  8.                 }
  9.                 else if (ctlElement is TextBox)
  10.                 {
  11.                     listTextboxs.Add(ctlElement as TextBox);
  12.                 }
  13.             }
複製代碼
其實List本身就有陣列的功用,若閣下習慣用陣列的話
List也能幫你轉出,如下
  1.             Button[] buttonsArray = listBtns.ToArray();
  2.             TextBox[] TtextboxsArray = listTextboxs.ToArray();
複製代碼
閣下可以將以上放在Form_Load 之中,這樣當執行時,就可一次蒐集完成
應用方式很多,就看閣下如何應用了...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
317
積分
1000 點
潛水值
16095 米
4
發表於 2015-6-18 03:02 PM|只看該作者
我比較想問你,
你是有什麼需求需要用到「陣列」控制項?

我建議你把你所想要做的情境、功能、需求提出來,
這樣子只解決到問題的表面,對於問題本身這不是最佳解。

提醒一下,
我不推薦使用「陣列」來儲存控制項,
如果可以,麻煩請用vihee網友用的「List」或者是「Dictionary」,
這樣子對於程式的彈性會大很多。

...
瀏覽完整內容,請先 註冊登入會員
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

帖子
15
積分
0 點
潛水值
1358 米
5
發表於 2015-6-19 12:55 AM|只看該作者
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php


主要是有64個類似的控件,但又不想一個個event慢慢寫,也不好維護

謝謝大家的回覆




如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
317
積分
1000 點
潛水值
16095 米
6
發表於 2015-6-22 10:41 AM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
voodoozip 發表於 2015-6-19 12:55 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

主要是有64個類似的控件,但又不想一個個event慢慢寫,也不好維護

謝謝大家的回覆 ...

....你這樣不需要用到控制項集合,
...
瀏覽完整內容,請先 註冊登入會員

點評

hsw1976 像這種幾十個控制項的,相似事件都包在同一個 event 裡會比較好維護嗎?不會漏漏長?  發表於 2016-3-21 03:36 AM
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

Rank: 1

帖子
50
積分
63 點
潛水值
22948 米
7
發表於 2015-7-5 05:07 PM|只看該作者
sam30525sam 發表於 2015-6-22 10:41 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

....你這樣不需要用到控制項集合,
因為你沒有動態增加控制項,
你只需要所有的控制項都用同一個event就 ...

...
瀏覽完整內容,請先 註冊登入會員
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部