Wie Festlegen der Z-Reihenfolge eines Steuerelements, das WinForms verwendet

Ich schreibe eine benutzerdefinierte TextBox , die bei der Fokussierung ihren TextBox ändert.

Beim Hinzufügen eines Rahmens wird das Steuerelement mit den benachbarten überlappend textBox.BringToFront() . Ich bringe das Textfeld vorübergehend an den textBox.BringToFront() des Dialogfelds (mit textBox.BringToFront() ).

Sobald jedoch die Bearbeitung abgeschlossen ist und der Fokus verloren ist, möchte ich das Steuerelement in der Z-Reihenfolge an seine ursprüngliche Position zurücksenden.

Ist das möglich (vorzugsweise auf einfache Art!)

    Rufen Sie die Methoden GetChildIndex und SetChildIndex der Controls Auflistung des GetChildIndex SetChildIndex .

    Es gibt keine Z-Reihenfolge wie in VB, aber Sie können die Methoden GetChildIndex und SetChildIndex verwenden, um ihre Indizes manuell GetChildIndex und SetChildIndex .

    Hier ist ein Beispiel, wie man es benutzt. Sie müssen wahrscheinlich eine Aufzeichnung jedes Indexes der Kontrollen behalten, damit Sie es zurückstellen können, wenn es fertig ist.

    So etwas ist wahrscheinlich das, wonach Sie suchen:

     // Get the controls index int zIndex = parentControl.Controls.GetChildIndex(textBox); // Bring it to the front textBox.BringToFront(); // Do something... // Then send it back again parentControl.Controls.SetChildIndex(textBox, zIndex); 

    In Verbindung mit dem FlowLayoutPanel wird dadurch ein Steuerelement nach oben oder unten verschoben

      ///  /// When used with the FlowLayoutPanel this will move a control up or down ///  ///  ///  private void C_On_Move(object sender, int UpDown) { //If UpDown = 1 Move UP, If UpDown = 0 Move DOWN Control c = (Control)sender; // Get the controls index int zIndex = _flowLayoutPanel1.Controls.GetChildIndex(c); if (UpDown==1 && zIndex > 0) { // Move up one _flowLayoutPanel1.Controls.SetChildIndex(c, zIndex - 1); } if (UpDown == 0 && zIndex < _flowLayoutPanel1.Controls.Count-1) { // Move down one _flowLayoutPanel1.Controls.SetChildIndex(c, zIndex + 1); } }