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

伊莉討論區

搜索
尊貴會員無限使用任何功能尊貴會員無限看帖不用回覆認識好友、聊天,分享生活趣事
三上悠亜cosplay流出cosplayjulia世紀帝國vr
外掛汽旅偷拍3d麻呂屋根裏の催眠性指逆レ○プ

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

[繁/無修正]魔都精兵

[繁]迷宮飯11-

[繁]肌肉魔法使-MASHL

✡ 斗破蒼穹 年番/鬥

[繁]香格里拉・開拓異

老媽沒收兒子的手機
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 4315|回復: 2

[求助] (以解決)請問各位先進...C#是否有把"資料類型"導入函式的方法[複製鏈接]

Rank: 2Rank: 2

帖子
475
積分
967 點
潛水值
31439 米
發表於 2018-1-22 11:10 AM|顯示全部樓層
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
本帖最後由 baepi 於 2018-1-23 04:12 PM 編輯

近來小弟開始初涉C#這領域
有個專案是全動態創建UI
過程並不難...創建元件 + 把該元件丟到指定的容器便能顯示(如下)
  1. Button bt = new Button();
  2.                 bt.SetBounds(10, 10, 100, 20);
  3. this.pictureBox1.Controls.Add(bt);
複製代碼
但如今有個糾結點...因為會有多個容器...(如: PictureBox   Panel  GroupBox )
若是創建個button...以我目前的寫法會變得極度冗長(如下)
  1. public void add_Button (int x , int y , int w , int h , object obj , int sw)
  2.         {
  3.             Button bt = new Button();
  4.             bt.SetBounds(x, y, w, h);
  5.             switch(sw)
  6.             {
  7.                 case 0:
  8.                     if(true)
  9.                     {
  10.                         PictureBox pb = (PictureBox)obj;
  11.                         pb.Controls.Add(bt);
  12.                     }
  13.                     break;
  14.                 case 1:
  15.                     if (true)
  16.                     {
  17.                         Panel p = (Panel)obj;
  18.                         p.Controls.Add(bt);
  19.                     }
  20.                     break;
  21.                 case 2:
  22.                     if (true)
  23.                     {
  24.                         GroupBox gb = (GroupBox)obj;
  25.                         gb.Controls.Add(bt);
  26.                     }
  27.                     break;
  28.             }
複製代碼
以上只是把我原本的程式簡化(因為容器太多了)...如此不僅不方便閱讀....以後若是有問題感覺也難以檢修(畢竟要創建的UI有很多很多
因此想請問....能否有辦法將函式優化成(如下)
使用者只要輸入add_Button (10 ,10 , 100 , 20 , this.pictureBox1 , PictureBox );
也即是(如上)...最後一個參數可導入資料類型...讓該函式可直接知道收到的obj是甚麼資料類型

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

使用道具檢舉

帖子
59
積分
28 點
潛水值
11690 米
發表於 2018-1-22 09:17 PM|顯示全部樓層
雖然不是很清楚您的需求......
我假設您是想動態增加元件(例如:Button)到對應的容器中(pictureBox1, groupBox1), 然後您希望透過傳遞一個參數來動態建立原件到參數所指定的容器中......

底下這段您看看有沒有符合需求:
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.         AddControl(20, 20, 100, 20, pictureBox1);  //pictureBox1中加button
  4.         AddControl(20, 20, 100, 20, groupBox1);   //groupBox1中加button      
  5. }

  6. void AddControl(int x, int y, int w, int h, Control control)
  7. {
  8.         Button bt = new Button();
  9.         bt.SetBounds(x, y, w, h);           
  10.            
  11.         bt.Parent = control;                     
  12. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員

點評

baepi 雖然與原本的想法有點出入...但貌似通用.感謝大大教學,明日做詳細測試!  發表於 2018-1-23 12:25 AM
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 1

帖子
68
積分
196 點
潛水值
21468 米
發表於 2018-1-23 12:32 AM|顯示全部樓層
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
1. 大多數 UI 物件都會繼承 Control 這個類別,你只要以這個類別當參數,就能使用共用方法
2. 透過 typeof(obj) 或 obj.GetType().FullName 可以辯識其內容物為何,可以針對其內容物作轉型的動作,並使用該型別自己的方法。
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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