作者abc95007 (別理我)
看板C_Sharp
標題[問題] 如何尋找 list 中變動的位置
時間Tue Feb 12 18:06:37 2019
List<class>
class 由外面 UI 所控制
假設外面 UI 改了一下 class
要如何知道變更的 class 是在 List 哪一個 address?
我只想到上一個狀態與目前狀態一一比較, 哪個不同就知道了
應該還有更聰明的作法吧......
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.152.36
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1549966001.A.996.html
1F:→ ssccg: Event02/12 18:24
說清楚一點好了 大概架構類似下面
// 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
2F:推 CloudyWing: listUI放field,用IndexOf()?02/12 23:47
3F:推 forever84721: 每個RB的tag屬性先放可辨識的東西 之後就可以抓了02/13 08:17
4F:→ testPtt: 猜你要的是arraylist02/13 14:09
最後是 add 時候,UIs.rdo.name 順便依序改個名字,sender 抓出來時就可以辨識了
※ 編輯: abc95007 (180.217.138.101), 02/13/2019 16:26:06
5F:推 Litfal: 把class instance或index直接丟到控制項的Tag屬性最簡單 02/14 18:13
6F:推 disabledman: tag 屬性真的是無敵,要善用之 02/20 09:19
7F:推 sd016808: 以你的需求,善用匿名函式 把Checkchanged放在For裡面就 03/10 22:46
8F:→ sd016808: 可以拿到當初的index了 03/10 22:46
9F:→ sd016808: 常常在下層的結構不想紀錄上層結構的對應關係時,我都會 03/10 22:47
10F:→ sd016808: 用這種方式去處理 03/10 22:47