2009-08-02 9 views
0

Ich benutze Variablenvariable Owner-Draw für eine Listbox (Winforms 2.0) , wenn ein Benutzer wählt ein Element Ich möchte ein Bearbeitungssteuerelement in dieser Zelle zeichnen ist dass doable nicht ein Drop-Down sondern eine tatsächliche Kontrolle bearbeiten in der Zelle oder ein Element erscheinen, wie es waren wie dankListbox-Steuerelement OwnerDraw-Frage (Hinzufügen eines Bearbeitungssteuerelements zum Listbox-Element)

+0

Meinst du, dass du eine editierbare Dropdown-Liste willst? Wo kann der Benutzer aus den Elementen in der Liste auswählen oder einen eigenen Wert in eine Textbox eingeben? – DOK

+0

Arbeiten Sie an einer Desktopanwendung (WinForms) oder einer Webanwendung (ASP.Net)? Es gibt einen großen Unterschied, wenn Sie versuchen, dies zu tun. Es ist übrigens völlig in Ordnung, dass Sie Ihre Frage bearbeiten, um diese Probleme zu klären. – DOK

+0

Und wenn Desktop, wollen Sie sicher sein, Winforms vs Wpf zu klären. –

Antwort

1

ich verwende einige ähnlich für Listview. Methode ist:

  1. Erstellen Sie TextBox, fügen Sie zu Controls-Array hinzu, und verstecken Sie eins.

    innerTextBox.Size = neu Größe (0, 0);

    innerTextBox.Location = neuer Punkt (0, 0);

    this.Controls.AddRange (neues Steuerelement [] {this.innerTextBox});

    innerTextBox.KeyPress + = neuer KeyPressEventHandler (this.EditOver);

    innerTextBox.LostFocus + = neuer EventHandler (this.FocusOver);

    innerTextBox.Hide();

    innerTextBox.Text = "";

  2. Auf Doubleclick-Ereignis binden eigene Methode, bei der ausgewählte Artikel finden und den Wert TextBox erhalten

    this.DoubleClick + = new Eventhandler (this.EditableDoubleClick);

    private void EditableDoubleClick (object sender, System.EventArgs e) {

    selectedItemText = selectedItem.ToString();

    innerTextBox.Size = neue Größe (subItemRect.right - subItemRect.left, subItemRect.bottom - subItemRect.top);

    innerTextBox.Location = neuer Punkt (subItemRect.left, subItemRect.top);

    innerTextBox.Show();

    innerTextBox.Text = selectedItemText;

    }

  3. Auf dem Fokus verloren in TextBox - Sollwert wieder in ausgewähltem Element.

    selectedItem = innerTextBox.Text;

Verwandte Themen