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

伊莉討論區

搜索
尊貴會員無限使用任何功能認識好友、聊天,分享生活趣事安全提問(回答) 和 永久尊貴會員 事宜
office三上悠亜無碼流出波多野結出包王女母乳kkbox
akuya死神jac 041我們的七レベッカsdmf 017goodbye

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

[繁]最強肉盾的迷宮攻

[簡]通靈王 FLOWERS -

湖南湘潭 女老師因學

[繁]佐佐木與文鳥小嗶

〖高清繁〗霹靂天機貳

[繁]SYNDUALITY Noir
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 4313|回復: 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是甚麼資料類型

...
瀏覽完整內容,請先 註冊登入會員
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

帖子
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
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 1

帖子
68
積分
196 點
潛水值
21468 米
發表於 2018-1-23 12:32 AM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
1. 大多數 UI 物件都會繼承 Control 這個類別,你只要以這個類別當參數,就能使用共用方法
2. 透過 typeof(obj) 或 obj.GetType().FullName 可以辯識其內容物為何,可以針對其內容物作轉型的動作,並使用該型別自己的方法。
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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