2009-07-03 18 views
0

Dies ist eine WinForms Frage.ListBox Focused Artikel

In einer ListBox mit SelectionMode = MultiSimple, wie bekomme ich das aktuell fokussierte Element?

Hinweis, ich möchte nicht die SelectedItem oder SelectedItems, sondern das Element, das derzeit die gestrichelten Linien haben, etwa wie ListView.FocusedItem.

Antwort

1

Das ist ein bisschen hacky, aber ich habe keine bessere Lösung gefunden.

  1. Put ListBox.DrawMode auf OwnerDrawFixed
  2. Capture the DrawItem Ereignis und auf einem Feld den Fokus Index

    if (e.State == DrawItemState.Focus) { 
         myfocus = e.Index; 
        } 
        // Draw the background of the ListBox control for each item. 
        e.DrawBackground(); 
        // Define the default color of the brush as black. 
        if (brochas.Count != colores.Count) { 
         ProcesarBrochas(); 
        } 
    
        // Draw the current item text based on the current Font 
        // and the custom brush settings. 
        if (Items.Count > e.Index) { 
         e.Graphics.DrawString(Items[e.Index].ToString(), 
          e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault); 
        } 
        // If the ListBox has focus, draw a focus rectangle around the selected item. 
        e.DrawFocusRectangle(); 
    
  3. Verwenden Sie die myFocus

+0

+1 Schöne Problemumgehung –

0

Ich glaube nicht, dass da standardmäßig eine drin ist - eine Benutzerkontrolle mag hier die einzige Option sein.

Sie möchten vielleicht überdenken, was Sie tun - warum brauchen Sie die fokussierten anstelle der ausgewählten? Es kann einen anderen Weg geben, es zu tun.

+0

Variable speichern Was ich will, ist um den Fokus auf andere Steuerung zu setzen, wenn der Benutzer auf den ersten Gegenstand "fokussiert" ist und die "Pfeil nach oben" Taste –

0

Dies ist nicht die perfekte Lösung, aber eine Problemumgehung könnte sein, die selectedItem in einem "focusedItem" zu speichern, wenn das Blur-Ereignis ausgelöst wird, dann einfach abrufen, wenn Sie müssen.

+0

impulsiert d ein Blur-Ereignis auf dem ListBox-Steuerelement, wo ist es? –

Verwandte Themen