作者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/cn.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