簡體   English   中英

沒有在C#中以編程方式選擇listview項

[英]listview item is not selected programmatically in C#

我已經看到了有關此問題的所有問題,但是解決方案似乎不適用於我的情況。

我試圖在列表視圖中選擇一個項目,我有以下內容:

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,則會收到錯誤消息。 如果選擇了該選項卡,並且在運行這段代碼之前繪制了ListView,則選擇正確。 它可以改變圖形或不改變Listview? 我如何以某種方式強制執行此操作?

我在這里發布我使用的解決方法。 我知道這只是一個愚蠢的解決方法,但是我仍然沒有找出這種行為背后的真正原因。

在GUI的初始化過程中,我以編程方式將選項卡更改為Listview所在的選項卡:

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

然后在初始化結束時,我將其放回第一個Tab

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM