台灣最大程式設計社群網站
線上人數
680
 
會員總數:244893
討論主題:188887
歡迎您免費加入會員
討論區列表 >> C# >> C# 動態新增控制項如何"個別"新增事件
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# 動態新增控制項如何"個別"新增事件
價值 : 30 QP  點閱數:238 回應數:13

樓主

雄哥
門外漢
0 2
53 5
發送站內信

大家好:
目前已經將Button控制項依MYSQL資料庫的內容來做動態新增,但想要在點擊Button後從資料庫中抓取圖片在Picturebox中"動態"顯示出來
因為每個Button所需抓取的資料皆不相同(每個Button的Click事件皆不一樣),請問版上的大家們都做呢?


int a = datable2.Rows.Count;
Button[] topic2 = new Button[a];
for (int j=0; j < datable2.Rows.Count ;j++)
{
reader2.Read();
Button2[j] = new Button();
Button2[j].Name = "topic2" + j;
Button2[j].Text = reader2["Name"].ToString()+">>";
Button2[j].AutoSize = true;
Button2[j].Location = new Point(43, 85 *( j+1) );
Button2[j].Font = new Font("微軟正黑體", 12);
Button2[j].ForeColor = Color.White;
Button2[j].FlatStyle = FlatStyle.Flat;
Button2[j].FlatAppearance.BorderColor = Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(65)))), ((int)(((byte)(85)))));
Button2[j].BackColor = Color.FromArgb(((int)(((byte)(55)))), ((int)(((byte)(65)))), ((int)(((byte)(85)))));
}
panelAll.Controls.AddRange(Button2);


這邊是小弟的程式碼,請問怎麼修改呢?

搜尋相關Tags的文章: [ C#,動態新增 ] ,
本篇文章發表於2019-08-22 14:40
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

P陳
檢舉此回應
Button 還有一個叫 TAG 的東西很好用
當您產生Button[1] 後,
可再加 Button[1].tag="PathName=D:\Picture\....\111.jpg^|其他參數名1=其他參數值1^|其他參數名2=其他參數值2"

當按下 Button[1]時,就可以取得button[1].tag 再分切而得到Pathname 及其他參數
在VB我都是這樣作 C# 應該也是如此作即可。

本篇文章回覆於2019-08-22 16:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

雄哥
檢舉此回應
P陳您好謝謝您的回答!
但我想詢問是如何個別定義每個button_click事件
本篇文章回覆於2019-08-22 22:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

pilipala
檢舉此回應
參考看看


本篇文章回覆於2019-08-23 09:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

雄哥
檢舉此回應
pilipala您好謝謝您的回答!
但我想詢問的是怎麼個別設定
因為我每個Button所需抓取的資料皆不相同
您上面的程式似乎是全部Button同時設定
本篇文章回覆於2019-08-23 11:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

pilipala
檢舉此回應
簡單直覺作法,請參考看看

本篇文章回覆於2019-08-23 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

Allen
捐贈 VP 給 Allen 檢舉此回應
請問這些button要執行的程式,各別都沒有規則可言嗎?能否舉例
本篇文章回覆於2019-08-23 17:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
比如
button(0).name="button0"
button(1).name="button1"
button(2).name="button2"
button(3).name="button3"
那還是到按下Button 後到同一個地方


只是 C# 好像是用 Switch 而不是 Select
本篇文章回覆於2019-08-23 21:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

誰是誰
檢舉此回應
問題的重點在於 "不同的細節差異是甚麼,沒有細節差異的描述,就不會有切合目標的解法。
本篇文章回覆於2019-08-25 13:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

雄哥
檢舉此回應
舉例來說
button1要從資料庫抓取id為1的某幾筆資料(有圖片),然後再動態顯示到picturebox(有幾筆資料即顯示幾個picturebox)

本篇文章回覆於2019-08-25 14:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

雄哥
檢舉此回應
以此類推,button2要從資料庫抓取id為2的資料(有圖片),然後再動態顯示到picturebox
本篇文章回覆於2019-08-25 14:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
最有價值解答

誰是誰
檢舉此回應
這哪需要不同的方法,全部 Button.Click event 都委派給同一個 Button_Clicked 方法就好啦。 (事件和事件委派方法是兩件事,你寫的叫做事件委派方法,不是事件)
最簡單的做法就是把 Id 藏在 Button.Tag 屬性,SQL 查詢語句要組合的時候抓 Button.Tag 屬性的值代入就結束啦。
本篇文章回覆於2019-08-25 21:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

誰是誰
檢舉此回應
也不需要甚麼 switch case , 抓 Tag 塞值給 SQL Statement, 結束
本篇文章回覆於2019-08-25 21:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

雄哥
檢舉此回應
謝謝大家的幫忙!!!
問題已經得到解決了
已用Tag的方式解決

感恩
本篇文章回覆於2019-08-27 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.