未在C#中以编程方式选择列表视图项

时间:2014-04-14 17:10:42

标签: c# listview select selection

我已经看到了有关此问题的所有问题,但解决方案似乎并不适用于我的情况。

我正在尝试在列表视图中选择一个项目,我有以下内容:

ListView Matlab_Hst_Props;
...
//Matlab_Hst_Props.HideSelection == false;
//Matlab_Hst_Props.Items.Count == 4;

Matlab_Hst_Props.Invoke(new Action(() => Matlab_Hst_Props.Focus()));
Matlab_Hst_Props.Invoke(new Action(() => Matlab_Hst_Props.Select()));
Matlab_Hst_Props.Invoke(new Action(() => Matlab_Hst_Props.Items[0].Selected = true));

//Matlab_Hst_Props.Items[0].Selected == true

Matlab_Hst_Props.Invoke(new Action(() => Matlab_Hst_Props.Items[0].Focused = true));

//Matlab_Hst_Props.Items[0].Focused == false;!!!
//Matlab_Hst_Props.SelectedItems.Count == 0; !!!

是的,我是从一个帖子做的,但即使我不使用该帖子并删除invoke,我仍然有相同的行为。

请帮忙。 我能错过什么?


我想在此处添加更新。 事实上,我的GUI由标签组成。 此ListView位于第三个选项卡中。如果我不点击第三个选项卡并且未绘制ListView,则会收到错误。 iF我选择选项卡,并在运行此代码之前绘制ListView,然后正确完成选择。 什么能改变绘图或不改变Listview? 我怎么能以某种方式强迫这样的行动?

1 个答案:

答案 0 :(得分:0)

我在这里发布我使用的解决方法。我知道这只是一个愚蠢的解决方法,但我仍然没有找到这种行为背后的真正原因。

在GUI的初始化过程中,我以编程方式将选项卡更改为Tab Listview驻留:

Top_Tabs.Invoke(new Action(() => Top_Tabs.SelectedIndex = 2));

然后在初始化结束时,我把它放回第一个Tab

Top_Tabs.Invoke(new Action(() => Top_Tabs.SelectedIndex = 0));