2017-10-26 3 views
-1

Ich habe ein Benutzersteuerelement, das ein Textfeld und ein Listenfeld verwendet. Das Listenfeld ist nicht sichtbar, es wird nur sichtbar, wenn der Benutzer mit der Eingabe beginnt oder in das Textfeld klickt.Bringen Sie ein Steuerelement nach vorne

Ich habe das Benutzersteuerelement zu einer Gruppe hinzugefügt, die auf dem Formular ist.

Jetzt, wenn die Listox sichtbar wird, bleibt sie im Gruppenfeld und kann nicht die volle Höhe sehen. Ich möchte es oben schwimmen, damit ich die volle Höhe sehen kann.

Ich habe mich umgesehen, einige Lösungen implementiert, aber nichts hat für mich funktioniert.

Konstruktor für die Benutzersteuerung

namespace YarCustomControl 
{ 
    public partial class YarCustom : TextBox 
    { 
     public YarCustom() 
     { 
      InitializeComponent(); 

      _code = ""; 
      _id = -1; 

      //list box handling 
      listBox = new ListBox(); 
      listBox.Visible = false; 
      listBox.Font = this.Font; 
      listBox.Location = this.Location; 
      listBox.BorderStyle = BorderStyle.Fixed3D; 
      listBox.Resize += new EventHandler(listBox_Resize); 
      //listBox.SelectedValueChanged += new EventHandler(listBox_SelectedValueChanged); 
      listBox.KeyDown += new KeyEventHandler(listBox_KeyDown); 
      listBox.Click += new EventHandler(listBox_Click); 

      //test => no affect on listbox 
      this.Controls.Add(listBox); 

      listBox.Visible = false; 

     } 
} 
} 

und das folgende Verfahren macht die List-Box sichtbar. Beide setChildIndex (kommentiert und nicht kommentiert) werfen ein Fehler

private void makeListBoxVisible() 
     { 
      Form parentForm = (this.FindForm() as Form); 

      //parentForm.Controls.SetChildIndex(listBox, 0); 
      this.Controls.SetChildIndex(listBox, 0); 
      listBox.Visible = true; 
      listBox.BringToFront(); 
     } 

enter image description here

Was ist der beste Ansatz für so etwas wie diese Behandlung?

Meine Umgebung ist VS2010 und WinForms.

+1

Warum nicht einfach eine ComboBox verwenden, die Sie zu imitieren scheinen? – LarsTech

+0

Erstellen etwas nah an dem, was sie derzeit haben und haben ein Problem mit. –

+0

Sie können es auf diese Weise versuchen: [Wie Dropdown-Informationsfeld in C# Winforms erstellen?] (Https://stackoverflow.com/a/21289062/719186) – LarsTech

Antwort

0

Jetzt, wenn die Listox sichtbar wird, bleibt sie im Gruppenfeld und kann nicht die volle Höhe sehen. Ich möchte es oben schwimmen, damit ich die volle Höhe sehen kann.

Einfach gesagt direkt auf das Formular.

+0

Kann nicht. Es wird die aktuelle Kontrolle ersetzen, für die sie nicht den Quellcode haben und bestimmte Probleme haben. –

Verwandte Themen