Gruppieren Sie die Optionsfelder in C#
-
Verwenden Sie die Klasse
GroupBox
, um die Optionsfelder inC#
zu gruppieren -
Verwenden Sie die Klasse
Panel
, um die Optionsfelder inC#
zu gruppieren -
Gruppieren Sie die Optionsfelder programmgesteuert, ohne die Klasse
Panel
oderGroupBox
inC#
zu verwenden
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:
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:
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:
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.
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