c#有关ListView的一些问题

时间:2011-02-28 16:16:48

标签: c# winforms listview

我对ListViews有一些疑问。

第一个问题: 我在设计师中获得了5个列表视图。 我正在尝试制作4个列表视图的数组(从第2个到最后一个)所以我尝试了这种语法[不在函数内部]:

ListView[] lvs = { listView2, listView3, listView4, listView5 };

但它说listViews不是静态的所以我尝试了这种语法(外部函数):

ListView[] lvs = new ListView[4];

然后在内部功能

lvs = { listView2, listView3, listView4, listView5 };

但它也没有用,所以最后我使用了这种语法(外部函数):

ListView[] lvs = new ListView[4];

和这个内部功能:

lvs[0] = listView2;
lvs[1] = listView3;
lvs[2] = listView4;
lvs[3] = listView5;

哪个有效。但我想用以前的方式之一来做..你能告诉我为什么它对我不起作用的其他语法以及如何修复它?

第二个问题:我正在尝试检查listview2中是否存在listview1中的项目。 所以我试过

listView2.Items.Contains((ListViewItem)listView1.SelectedItems[0].Clone());

但它总是返回false,即使我这样做>

listView2.Items.Add((ListViewItem)listView1.SelectedItems[i].Clone());

我该如何修复它?为什么它总是返回false? >我不想通过运行循环来修复它并检查item = selecteditem。

第三个也是最后一个问题(与listviews无关): 我正在使用此代码

((TabPage)tabControl1.Controls["tabPage" + (i + 1)])

将字符串转换为控件。唯一的问题是我需要告诉控件他在哪个控件中,所以如果我想将字符串转换为控件位于位于其他控件内的其他控件内的控件内,代码太长了......是否有一种更好,更简单,更简单的方法将字符串转换为控制(无需写入哪个控件)?

非常感谢!

2 个答案:

答案 0 :(得分:3)

第一个问题

您需要插入new ListView[]

ListView[] lvs = new ListView[] { listView2, listView3, listView4, listView5 };

第二个问题
.Clone()创建一个新对象,一个新对象永远不会与旧对象相同 您需要在要比较的对象上找到另一个标识符。

答案 1 :(得分:1)

如果我理解你的第三个问题,你可能想要使用

tabControl.Controls.Find(string key, bool searchAllChildren)

而且我也认为应该有不同问题的单独主题。