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

伊莉討論區

搜索
尊貴會員無限觀看附件圖片尊貴會員無限下載附件認識好友、聊天,分享生活趣事
gemegamgfc2無碼銀魂gd
4165430昼下がり大壮inari影后yahtzee闇種

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

[繁]機械臂05-

【高清繁】✡ 霹靂英

[繁]亂馬½ 05-

✡ 大道朝天・07・202

[繁]女僕冥土小姐05-

[繁]膽大黨06-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 6848|回復: 8
打印上一主題下一主題

[問題]關於button sender的問題[複製鏈接]

帖子
276
積分
0 點
潛水值
16482 米
跳轉到指定樓層
樓主
發表於 2011-12-26 01:55 AM|只看該作者|倒序瀏覽
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
button現在有10個 我不想一個一個去宣告Click的事件
GOOGLE了不少相關的,大概都是Button B= sender as Button;TextBox1.text=B.text;不然就是Button b= ((b)sender); 但寫進去後按按鍵都沒有觸發...所以上來問問各位大大們是否有什麼樣的方式可以讓C#自行去run他的物件ID並且觸發事件.
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
分享分享0收藏收藏0支持支持0

使用道具檢舉

  專 家(12000/24000)

落葉知秋

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1600
積分
23884 點
潛水值
54991 米
頭香
發表於 2011-12-26 07:55 AM|只看該作者
1. 你的語法似乎跟VB混在一起了吧?C#的宣告有用as?
    通常是這樣寫吧?
  1. Button b=(Button)sender;
複製代碼
2. 有10個Button,想共用同一個Click事件,
    只要把Button的Click那邊的事件名稱改成一樣的就好了。
新手就更該多用「心」動「手」找答案;
經驗是累積來的,答案則是 Google 來的。
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

lpdl 該用戶已被刪除
3
發表於 2012-1-3 01:36 AM|只看該作者
你確實是把VB和C#弄混了
接著樓上的同學繼續講吧,舉個例子,假設你的事件響應方法是
protected void work(sender e,event$^%$(這個參數我忘了))
那你只要先寫一個button並且宣告它的click事件如下
  1. <asp:Button id="button1"  runat="server" onclick="work"></asp:Button>
複製代碼
然后你把它Ctrl+C然后Ctrl+V復制10次,就會變成這樣
  1. <asp:Button id="button1"  runat="server" onclick="work"></asp:Button>
  2. <asp:Button id="button2"  runat="server" onclick="work"></asp:Button>
  3. <asp:Button id="button3"  runat="server" onclick="work"></asp:Button>
  4. ...
複製代碼
其中id一般會由編譯器自動幫你重命名
然后onclick事件中綁定的方法還是不變的
所以結果就是,你點擊這十個中的任何一個,都會觸發work方法...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 2Rank: 2

帖子
192
積分
835 點
潛水值
27826 米
4
發表於 2012-1-3 11:46 AM|只看該作者
自己寫一段程式碼,然後在事件的連結中加入.
  1. private void btnChipSelect(object sender, EventArgs e)
  2.         {
  3.             Button btn = (sender as Button);
  4.             if (btn.BackColor == Color.Transparent)
  5.                 btn.BackColor = Color.Wheat;
  6.             else if (btn.BackColor == Color.Wheat || btn.BackColor == Color.Teal || btn.BackColor == Color.Red)
  7.                 btn.BackColor = Color.Transparent;
  8.         }
複製代碼

...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
  

使用道具檢舉

帖子
276
積分
0 點
潛水值
16482 米
5
發表於 2012-1-5 04:35 AM|只看該作者
這邊謝謝各位大大的講解....
我看了二樓就了解問題的根本了...
老實說小弟在學程式語言這塊 實在沒有天分...
完全搞不懂所謂的名詞(像是封裝阿~控制項之類的專業名詞
只是傻傻的一股勁靠著感興趣的FU在寫,總而言之還希望各位大大們繼續不吝指導了




回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 2Rank: 2

帖子
381
積分
885 點
潛水值
18312 米
6
發表於 2012-1-13 09:50 AM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
本帖最後由 Aeroth 於 2012-1-13 09:51 AM 編輯

修正一下,在C#中確實有as這個operator
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
  1. Button b=(Button)sender;
  2. Button b = sender as Button;
複製代碼
這兩行都是用來將sender轉型(cast)為Button,不同的是當sender不是Button這個type時,第一行會拋出InvalidCastException:
Unhandled Exception: System.InvalidCastException:
Unable to cast object of type 'XXXXXX' to type 'YYYYYY'.
第二行則是回傳null,不拋Exception...
瀏覽完整內容,請先 註冊登入會員
什麼都會,什麼都不會!
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

  專 家(12000/24000)

落葉知秋

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1600
積分
23884 點
潛水值
54991 米
7
發表於 2012-1-13 10:59 AM|只看該作者
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
Aeroth 發表於 2012-1-13 09:50 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

修正一下,在C#中確實有as這個operator
as (C# Reference)這兩行都是用來將sender轉型(cast)為Button,不同 ...

謝謝分享,一般都是看到以括號直接轉型,
...
瀏覽完整內容,請先 註冊登入會員
新手就更該多用「心」動「手」找答案;
經驗是累積來的,答案則是 Google 來的。
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 2Rank: 2

帖子
192
積分
835 點
潛水值
27826 米
8
發表於 2012-1-16 10:03 AM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
本帖最後由 1xnswitch 於 2012-1-16 10:04 AM 編輯

除了as(先判斷,如果是Yes,直接轉成你所要的型態) 可用之外還有 is(先判斷然後傳回布林值).
  1. if(o is Employee)
  2. {
  3.     Employee e=(Employee)o;
  4. }
複製代碼
  
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。

使用道具檢舉

Rank: 1

帖子
68
積分
196 點
潛水值
21728 米
9
發表於 2012-1-17 12:19 AM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
as 是用在不確定物件型別
如果無法正確轉成該型別則會給予 null 值
在 VB 則是透過 TryCast

>>但寫進去後按按鍵都沒有觸發..
另外事件是需要綁定的,因為在 .Net 設計階段是沒有控制項陣列這回事
所以你必需使用像
  1. Button1.Click += new EventHandler(this.Button_Click);
複製代碼
如果多個物件則可以多次宣告
至於該指定放哪呢?你可以放在 Init 或 Form_Load 裡皆可
重點就是在按鈕被按下前的時機前會進行按鈕事件的綁定
(另外你在設計階段時連點兩下,其實他作的動作就是到 .Designer.cs 裡幫你加一段事件綁定的程式碼罷了)...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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