2008-10-08 83 views
1

我有一個ListBox,當焦點處於選中狀態時,返回有效的SelectedIndex。如果我有一個有效的SelectedIndex,並且在同一個論壇上點擊一個TextBox,SelectedIndex現在變成-1。不過,我希望它保持SelectedIndex不變。我會如何去做這件事?列表框在失去焦點後繼續選擇

+1

是這個ASP .NET或的WinForms? – OwenP 2008-10-08 20:50:38

回答

3

列表框將保持略有不同的selectedIndex不管焦點。

我用一個ListBox,一個TextBox和一個用於顯示列表框的SelectedIndex的標籤在一個空白項目上測試它。在這兩種列表框的SelectedIndexChanged和文本框的框TextChanged事件我ListBox的SelectedIndex的更新標籤

一定有別的事情上,以使得所選指數更改爲-1。

+0

TextBox有AutoPostBack =真集也許? – wprl 2008-10-08 20:00:51

+0

也許,但標籤表明這是一個C#.NET,我的理解是在TextBox中沒有可用的C#.NET中的AutoPostBack屬性。 – PersistenceOfVision 2008-10-08 20:24:46

2

處理的SelectedIndexChanged事件,並保存選擇的值,這樣,當你的控制重新獲得焦點,您可以恢復它。

1

我還沒有在我的應用程序中驗證過這一點,但如果在LB失去焦點時SelectedIndex屬性發生變化,您可能需要緩存最後選定的索引並在控件重新獲得焦點時重置它。您可以在包含的表單中執行此操作,也可以在從ListBox派生的類中執行此操作。

你甚至可以嘗試,只要你把它變爲-1設置選定的索引。不知道會發生什麼,但我很好奇,找出....

編輯:只是測試它,並像其他的海報我也不能重現。必須有一些關於你的LB

1

難道這些控件在不同的對話,也許不同的標籤選項卡式的容器上?這是我能想到的唯一方法,即在改變焦點時會失去SelectedIndex。否則,任何人如何點擊一個按鈕以對項目採取行動?你會失去選擇時重點去你點擊按鈕...

3

我有同樣的問題,因爲原來的海報。 我無法弄清楚它的完全,但它似乎是當你有列表框綁定到一個可觀察的集合和集合被改變,選定的項目失去焦點。

我砍死圍繞這一問題通過在變量保存所選指數和重置,如果所選擇的指數爲-1(它是有效的恢復吧)

3

這是一個老問題,但萬一有人否則遇到同樣的問題請檢查您的ListBoxItem風格,特別是如果您使用WPF主題中的某種樣式。

與WPF主題的問題特別是 部分的控制模板之外包含:

<Style d:IsControlPart="True" TargetType="{x:Type ListBoxItem}"> 
.... 
<Style.Triggers> 
     <Trigger Property="Selector.IsSelected" Value="True"> 
      <Setter Property="Foreground"> 
       <Setter.Value> 
        <SolidColorBrush po:Freeze="True" Color="{DynamicResource BlackColor}" /> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
     <Trigger Property="IsKeyboardFocusWithin" Value="true"> 
      <Setter Property="IsSelected" Value="true" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

刪除Style.Triggers,問題就會消失