Gruppieren Sie die Optionsfelder in C#

Syed Hassan Sabeeh Kazmi 15 Februar 2024
  1. Verwenden Sie die Klasse GroupBox, um die Optionsfelder in C# zu gruppieren
  2. Verwenden Sie die Klasse Panel, um die Optionsfelder in C# zu gruppieren
  3. Gruppieren Sie die Optionsfelder programmgesteuert, ohne die Klasse Panel oder GroupBox in C# zu verwenden
Gruppieren Sie die Optionsfelder in C#

In Windows Form-Anwendungen können die RadioButton-Steuerelemente gruppiert werden, um als Satz zu funktionieren, und sind so konzipiert, dass sie Benutzern eine Option zwischen zwei oder mehr Einstellungen bieten. In diesem Tutorial lernen Sie die drei wichtigsten Methoden zum Gruppieren der Optionsfelder in C# kennen.

Jede Prozedur oder jedes Objekt verwendet nur einen Träger, da eine Gruppe von Optionsfeldern eine Auswahl von Paketträgern für die Bestellung anzeigen kann. Somit kann immer nur ein RadioButton ausgewählt werden, auch wenn dieser Teil einer Funktionsgruppe ist.

Sie können Panel- oder GroupBox-Steuerelemente oder ein Formular verwenden oder die Optionsfelder programmgesteuert gruppieren, indem Sie sie in einen Container ziehen. Alle direkt zu einem Formular hinzugefügten Schaltflächen werden zu einer Gruppe.

Verwenden Sie die Klasse GroupBox, um die Optionsfelder in C# zu gruppieren

Die Optionsfeld-Steuerelemente können sich gegenseitig ausschließen, da die Eigenschaft GroupName der RadioButton-Steuerelemente dies angibt. Die Klasse GroupBox gehört zum Namensraum System.Windows.Forms und stellt ein Windows-Steuerelement dar und kann wie folgt deklariert werden:

public class GroupBox : System.Windows.Forms.Control

Sie können den Fokus auf Steuerelemente innerhalb des GroupBox-Steuerelements auswählen oder erhalten, da es nicht ausgewählt werden kann oder den Fokus erhalten kann. Ein Nachteil bei der Verwendung dieses Steuerelements besteht darin, dass es keine Bildlaufleiste anzeigen kann. Wenn dies eine Ihrer Anforderungen ist, müssen Sie das Steuerelement Panel verwenden, um die Optionsfelder mit einer Bildlaufleiste zu gruppieren.

Es gruppiert die Optionsfelder logisch, um als Gruppe zu fungieren, und fungiert als Containersteuerelement zum Definieren von Gruppen von Steuerelementen. In einer Gruppe können Sie ein CheckedChanged-Ereignis erstellen, um nachzuverfolgen, welches Optionsfeld aus dem GroupBox-Steuerelement ausgewählt ist, und seinen Text auf Benutzeranforderung melden/aufzeichnen.

using System;
using System.Drawing;  // use drawing to insert buttons into the form_designer
using System.Windows.Forms;

namespace group_button {
  public partial class Form1 : Form {
    public Form1() {
      // initialize the essential components of the form
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      GroupBox groupBox1 = new GroupBox();
      RadioButton button1 = new RadioButton();
      button1.Location = new Point(20, 10);
      button1.Text = "new group radio button";

      RadioButton button2 = new RadioButton();
      button2.Location = new Point(20, 40);
      button2.Text = "new group radio button";

      groupBox1.FlatStyle = FlatStyle.Flat;
      groupBox1.Controls.Add(button1);
      groupBox1.Controls.Add(button2);

      Controls.Add(groupBox1);
    }
  }
}

Ausgang:

C# Optionsfeldgruppe - GroupBox-Klasse

Die Auswahl einer Optionsschaltfläche aus einer Gruppe löscht automatisch die anderen Optionen, wobei jeder Option oder Steuerung ein Container zugewiesen wird, der eine Gruppe bildet. Der Container in Windows Form-Anwendungen kann ein Formular sein, und Sie müssen jede Optionsfeldgruppe in ihrem Container platzieren, um mehrere Gruppen in einem einzigen Formular zu erstellen.

Darüber hinaus ist es möglich, den Zustand eines Optionsfelds in C# abzurufen oder festzulegen, indem die Eigenschaft Checked verwendet wird, nachdem eine neue Instanz der Klasse RadioButton initialisiert wurde. .NET bietet eine unglaubliche Anpassungsfähigkeit des GroupBox-Containers und der RadioButton-Klasse, indem Hunderte von Eigenschaften eingeführt werden, mit denen Sie zufriedenstellende Ergebnisse erzielen können.

Sie können ein ästhetisch ansprechendes Layout von Optionsfeldern erstellen und gleichzeitig Ihre funktionalen Anforderungen beibehalten, indem Sie sie mithilfe einiger häufig verwendeter Container, einschließlich der GroupBox und des Panel, gruppieren.

Standardmäßig ist ambient die BackColor Ihrer Radiobuttons. Dies können Sie ganz einfach mit Color.Transparent ändern und auf jeden Radiobutton anwenden, der zu einer bestimmten Gruppe gehört.

Verwenden Sie die Klasse Panel, um die Optionsfelder in C# zu gruppieren

Das Panel-Steuerelement ist besser zu verwalten als jedes andere Steuerelement zum Gruppieren von Optionsfeldern. Die Möglichkeit, einzelne Steuerelemente oder untergeordnete Steuerelemente ein- oder auszublenden, ist einer der besten Anwendungsfälle.

Verwenden Sie den Designer des Formulars zur Entwurfszeit oder die Klasse Panel im Code zur Laufzeit, um ein Panel-Steuerelement für Ihre Optionsfelder in einem Windows-Formular zu deklarieren oder zu erstellen.

Um ein Panel-Steuerelement zur Laufzeit zu erstellen, erstellen Sie eine Instanz seiner Klasse, legen Sie seine Eigenschaften fest und fügen Sie es dem Formularsteuerelement hinzu. Sie können ein dynamisches Panel erstellen, um eine Instanz der Klasse Panel mit der folgenden Zeile zu erstellen:

Panel dynamicPanel = newPanel();

.Location, .Name, .Size und .TabIndex sind einige der primären Eigenschaften des Panel-Steuerelements. Legen Sie seine Eigenschaften im Code fest und fügen Sie das Bedienfeld einem Formular hinzu, damit es Teil dieses bestimmten Formulars wird.

Sie können Controls.Add(panel_name); in Ihrem Code, um das Panel-Steuerelement zum Steuerelement des Formulars hinzuzufügen, und verwenden Sie Form.Controls.Add, um es basierend auf der Position und Größe des Steuerelements auf dem Formular anzuzeigen.

using System;
using System.Drawing;  // use drawing to insert buttons into the form_designer
using System.Windows.Forms;

namespace group_button {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      Panel panel1 = new Panel();
      RadioButton button1 = new RadioButton();
      button1.Location = new Point(20, 10);
      button1.Text = "new group radio button";

      RadioButton button2 = new RadioButton();
      button2.Location = new Point(20, 40);
      button2.Text = "new group radio button";

      panel1.Controls.Add(button1);
      panel1.Controls.Add(button2);

      Controls.Add(panel1);
    }
  }
}

Ausgang:

C#-Optionsschaltflächengruppe - Bedienfeldklasse

Die Panel-Eigenschaften lassen sich am einfachsten über das Fenster Eigenschaften des Controls einstellen. Darüber hinaus können Sie Ihrem Panel die Radio-Button-Steuerelemente hinzufügen und seine Sichtbarkeit festlegen, indem Sie den Wert von new_panel.Visible = false // oder true für sichtbar festlegen.

Wenn Sie möchten, dass die detaillierte Anpassung das Erscheinungsbild oder den Rahmenstil des Panel-Steuerelements ändert, verwenden Sie den Namensraum System.Drawing, um vordefinierte Methoden aufzurufen. Außerdem können Sie die Eigenschaft BorderStyle Ihres Panel-Controls verwenden, um das Panel mit einem einheitlichen dreidimensionalen Rahmen zu versehen.

Die Eigenschaften wie AutoScroll sind Teil Ihres Panel-Steuerelements, da es zur Klasse ScrollableControl gehört oder von dieser abgeleitet ist. Das Steuerelement Panel zeigt keine Beschriftung an; Um eine Optionsfeldgruppe mit Beschriftungen zu erstellen, müssen Sie das Steuerelement GroupBox verwenden.

Da das Control Panel eine identifizierbare Gruppierung für Optionsfelder bietet, kann es ein Formular auch nach Funktionen unterteilen. Sie können alle Optionsfelder verschieben oder ändern, indem Sie sie mit einem Panel-Steuerelement gruppieren, das dem Benutzer einen logischen visuellen Hinweis und einfachen Zugriff auf jedes Steuerelement über seine Eigenschaft Steuerelemente bietet.

Gruppieren Sie die Optionsfelder programmgesteuert, ohne die Klasse Panel oder GroupBox in C# zu verwenden

Die Eigenschaft Control.Tag macht die Gruppierung von Radiobuttons extrem einfach. Da die Eigenschaft Tag vom Typ Objekt ist, können Sie dynamisch OnClick-Ereignisse erstellen, um die Auswahl innerhalb benutzerdefinierter Gruppen zu handhaben.

Die Klasse RadioButton in C# fungiert als Auswahlsteuerelement, das ähnlich wie die Klasse CheckBox funktioniert, außer dass nur ein Optionsfeld innerhalb einer bestimmten Gruppe ausgewählt werden kann. Die Eigenschaften Aussehen und FlatStyle eines Optionsfelds können sein Aussehen bei der Erstellung seines Konstruktors ändern.

using System;
using System.Windows.Forms;

namespace group_button {
  public class create_radiobutton_group : RadioButton {
    public string radiobutton_group { get; set; }
  }
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      radioButton3.Hide();
      radioButton1.Hide();

      // a group
      create_radiobutton_group button_radio_first = new create_radiobutton_group();
      button_radio_first.Text = "button_radio_first";
      button_radio_first.AutoSize = true;
      button_radio_first.AutoCheck = false;
      button_radio_first.Top = 60;
      button_radio_first.Left = 60;
      button_radio_first.radiobutton_group = "a";
      button_radio_first.Click += group_radiobutton_Clicked;
      Controls.Add(button_radio_first);

      create_radiobutton_group button_radio_second = new create_radiobutton_group();
      button_radio_second.Text = "button_radio_second";
      button_radio_second.AutoSize = true;
      button_radio_second.AutoCheck = false;
      button_radio_second.Top = 60;
      button_radio_second.Left = 180;
      button_radio_second.radiobutton_group = "a";
      button_radio_second.Click += group_radiobutton_Clicked;
      Controls.Add(button_radio_second);

      // b group
      create_radiobutton_group button_radio_third = new create_radiobutton_group();
      button_radio_third.Text = "button_radio_third";
      button_radio_third.AutoSize = true;
      button_radio_third.AutoCheck = false;
      button_radio_third.Top = 100;
      button_radio_third.Left = 60;
      button_radio_third.radiobutton_group = "b";
      button_radio_third.Click += group_radiobutton_Clicked;
      Controls.Add(button_radio_third);

      create_radiobutton_group button_radio_fourth = new create_radiobutton_group();
      button_radio_fourth.Text = "button_radio_fourth";
      button_radio_fourth.AutoSize = true;
      button_radio_fourth.AutoCheck = false;
      button_radio_fourth.Top = 100;
      button_radio_fourth.Left = 180;
      button_radio_fourth.radiobutton_group = "b";
      button_radio_fourth.Click += group_radiobutton_Clicked;
      Controls.Add(button_radio_fourth);
    }
    private void Form1_Load(object sender, EventArgs e) {}
    private void button1_Click(object sender, EventArgs e) {}
    private void group_radiobutton_Clicked(object sender, EventArgs e) {
      // create an object of the radio button class
      create_radiobutton_group radio_button = (sender as create_radiobutton_group);

      if (!radio_button.Checked) {
        foreach (var control_var in Controls) {
          if (control_var is create_radiobutton_group &&
              (control_var as create_radiobutton_group).radiobutton_group ==
                  radio_button.radiobutton_group) {
            (control_var as create_radiobutton_group).Checked = false;
          }
        }

        radio_button.Checked = true;
      }
    }
    private void radioButton1_CheckedChanged(object sender, EventArgs e) {}

    private void radioButton2_CheckedChanged(object sender, EventArgs e) {}

    private void radioButton3_CheckedChanged(object sender, EventArgs e) {}
  }
}

Ausgang:

C# Radio Button Group - Ohne GroupBox und Panel Class

Jedes Bedienfeld oder Gruppenfeld stellt eine separate Gruppe von Optionsfeldern dar, wobei jede Gruppe ihre eigenen Einstellungen hat und eine Gruppe oder einen Satz darstellt.

Ein Konstruktor wie public RadioButton() erstellt eine Radiobutton-Instanz ohne Label und antwortet, indem er ein Click-Event auslöst, das von einem Event-Handler behandelt wird. Genau dieser Event-Handler ist für die gewünschte Reaktion des Benutzers verantwortlich.

Sowohl die Panel- als auch die GroupBox-Steuerung sind leistungsmässig optimiert und können je nach Bedarf weiter ausgebaut werden. Ein Windows Form Panel-Steuerelement kann Optionsfelder für eine übersichtliche Benutzeroberfläche visuell gruppieren, programmgesteuerte Gruppierungen durchführen oder die Optionsfeld-Steuerelemente zur Entwurfszeit in C# als Einheit verschieben.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

Verwandter Artikel - Csharp GUI