[問題] 如何尋找 list 中變動的位置

看板C_Sharp (C#)作者 (別理我)時間6年前 (2019/02/12 18:06), 6年前編輯推噓5(505)
留言10則, 7人參與, 6年前最新討論串1/1
List<class> class 由外面 UI 所控制 假設外面 UI 改了一下 class 要如何知道變更的 class 是在 List 哪一個 address? 我只想到上一個狀態與目前狀態一一比較, 哪個不同就知道了 應該還有更聰明的作法吧...... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.152.36 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1549966001.A.996.html

02/12 18:24, 6年前 , 1F
Event
02/12 18:24, 1F
說清楚一點好了 大概架構類似下面 // class 裡面包 UI class UIs { public RadioButton rdo; // others...... } // 這邊建立 list List<UIs> ListUI = new List<UIs>(); private void creat() { for (int i = 0; i < 20; i++) { UIs UI = new UIs(); UI.rdo.CheckedChanged += changedCheck; ListUI.Add(new UIs()); } } //當 class 裡面的 UI受到使用者改變時, 傳到裡面的 RadioButton都長得一樣..... //根本無法得知原本屬於list哪個位置, private void changedCheck(object sender, EventArgs e) { RadioButton rdo = (RadioButton)sender; } ※ 編輯: abc95007 (220.134.105.199), 02/12/2019 23:22:47

02/12 23:47, 6年前 , 2F
listUI放field,用IndexOf()?
02/12 23:47, 2F

02/13 08:17, 6年前 , 3F
每個RB的tag屬性先放可辨識的東西 之後就可以抓了
02/13 08:17, 3F

02/13 14:09, 6年前 , 4F
猜你要的是arraylist
02/13 14:09, 4F
最後是 add 時候,UIs.rdo.name 順便依序改個名字,sender 抓出來時就可以辨識了 ※ 編輯: abc95007 (180.217.138.101), 02/13/2019 16:26:06

02/14 18:13, 6年前 , 5F
把class instance或index直接丟到控制項的Tag屬性最簡單
02/14 18:13, 5F

02/20 09:19, 6年前 , 6F
tag 屬性真的是無敵,要善用之
02/20 09:19, 6F

03/10 22:46, 6年前 , 7F
以你的需求,善用匿名函式 把Checkchanged放在For裡面就
03/10 22:46, 7F

03/10 22:46, 6年前 , 8F
可以拿到當初的index了
03/10 22:46, 8F

03/10 22:47, 6年前 , 9F
常常在下層的結構不想紀錄上層結構的對應關係時,我都會
03/10 22:47, 9F

03/10 22:47, 6年前 , 10F
用這種方式去處理
03/10 22:47, 10F
文章代碼(AID): #1SOfgncM (C_Sharp)
文章代碼(AID): #1SOfgncM (C_Sharp)