Załadowałem 4 przyciski radia i po uruchomieniu programu kliknę je, a kliknę jedno kliknięcie, a pozostałe znikną. Co, jeśli chciałem mieć dwa przyciski radiowe, ale robili różne rzeczy?Przyciski radia WinForms
Odpowiedz
Grupuj różne zestawy opcji w oddzielnych polach grup (lub panelach lub innych kontrolkach kontenera, ale prawdopodobnie są to pola grupowe).
MSDN:
Windows Forms kontrole RadioButton są zaprojektowane, aby dać użytkownikom możliwość wyboru między dwoma lub więcej ustawień, z których tylko jeden może być przyporządkowany do zabiegu lub obiektu. Na przykład grupa kontrolek RadioButton może wyświetlać wybór nośników paczek dla zamówienia, ale tylko jeden z nośników będzie używany. Dlatego można wybrać tylko jeden przycisk RadioButton, nawet jeśli jest on częścią grupy funkcyjnej.
Grupujesz przyciski radiowe, przeciągając je do kontenera, takiego jak kontrolka Panel, kontrolka GroupBox lub formularz.
Zakłada to, że masz cztery lub więcej przycisków opcji w formularzu. Jeśli masz tylko dwa, powiedzmy, i chcesz umożliwić użytkownikowi możliwość wyboru obu, użyj zestawu pól wyboru.
spróbować umieścić podobne opcje w pojemniku, jak groupbox
Zazwyczaj grupa przycisków radiowych stosuje się, gdy stosuje się tylko jedna opcja. Jeśli jest to prawidłowe, aby wybrać wiele opcji jednocześnie, użyj zamiast tego Checkboxes.
Powinieneś używać kontroli GroupBox.
Wszystkie przyciski opcji w GroupBox wzajemnie się wykluczają - umieść 2 przyciski opcji w jednym bloku GroupBox, a 2 w innym bloku GroupBox.
Jeśli nie podoba ci się, aby twój pojemnik był widoczny - użyj panelu sterowania zamiast GroupBox. (Wystarczy przeciągnąć i upuścić)
Jak można się domyślić, górna jest groupbox, dolna (co jest invisble, ale pozwala tylko jeden readioButton w nim do wyboru) jest płyta.
HTH.
Podoba mi się koncepcja grupowania przycisków RadioButton w WPF. Istnieje właściwość GroupName
określająca, które kontrolki RadioButton wzajemnie się wykluczają (http://msdn.microsoft.com/de-de/library/system.windows.controls.radiobutton.aspx).
Więc napisałem klasę pochodzącą dla WinForms, który obsługuje tę funkcję:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Windows.Forms.VisualStyles;
using System.Drawing;
using System.ComponentModel;
namespace Use.your.own
{
public class AdvancedRadioButton : CheckBox
{
public enum Level { Parent, Form };
[Category("AdvancedRadioButton"),
Description("Gets or sets the level that specifies which RadioButton controls are affected."),
DefaultValue(Level.Parent)]
public Level GroupNameLevel { get; set; }
[Category("AdvancedRadioButton"),
Description("Gets or sets the name that specifies which RadioButton controls are mutually exclusive.")]
public string GroupName { get; set; }
protected override void OnCheckedChanged(EventArgs e)
{
base.OnCheckedChanged(e);
if (Checked)
{
var arbControls = (dynamic)null;
switch (GroupNameLevel)
{
case Level.Parent:
if (this.Parent != null)
arbControls = GetAll(this.Parent, typeof(AdvancedRadioButton));
break;
case Level.Form:
Form form = this.FindForm();
if (form != null)
arbControls = GetAll(this.FindForm(), typeof(AdvancedRadioButton));
break;
}
if (arbControls != null)
foreach (Control control in arbControls)
if (control != this &&
(control as AdvancedRadioButton).GroupName == this.GroupName)
(control as AdvancedRadioButton).Checked = false;
}
}
protected override void OnClick(EventArgs e)
{
if (!Checked)
base.OnClick(e);
}
protected override void OnPaint(PaintEventArgs pevent)
{
CheckBoxRenderer.DrawParentBackground(pevent.Graphics, pevent.ClipRectangle, this);
RadioButtonState radioButtonState;
if (Checked)
{
radioButtonState = RadioButtonState.CheckedNormal;
if (Focused)
radioButtonState = RadioButtonState.CheckedHot;
if (!Enabled)
radioButtonState = RadioButtonState.CheckedDisabled;
}
else
{
radioButtonState = RadioButtonState.UncheckedNormal;
if (Focused)
radioButtonState = RadioButtonState.UncheckedHot;
if (!Enabled)
radioButtonState = RadioButtonState.UncheckedDisabled;
}
Size glyphSize = RadioButtonRenderer.GetGlyphSize(pevent.Graphics, radioButtonState);
Rectangle rect = pevent.ClipRectangle;
rect.Width -= glyphSize.Width;
rect.Location = new Point(rect.Left + glyphSize.Width, rect.Top);
RadioButtonRenderer.DrawRadioButton(pevent.Graphics, new System.Drawing.Point(0, rect.Height/2 - glyphSize.Height/2), rect, this.Text, this.Font, this.Focused, radioButtonState);
}
private IEnumerable<Control> GetAll(Control control, Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetAll(ctrl, type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
}
}
umieścić wszystkie przyciski radiowe w polu grupy.
Teraz we wszystkich przyciskach opcji Właściwości ustaw Auto Check
na false
.
Alternatywnie, można ustawić
radioButton1->AutoCheck = false;
Wewnątrz funkcji radioButton1_Click
, uchwyt, jak potrzeba.Przykład:
Void radioButton1_Click(Object^ sender, EventArgs^ e) {
radioButton1->Enabled = true;
radioButton2->Enabled = true;
radioButton3->Enabled = true;
radioButton1->Checked = true;
radioButton2->Checked = true;
radioButton3->Checked = true;
}
Powoduje zaznaczenie wybranych przycisków radiowych.
- 1. Aplikacja radia FM na Androida
- 2. Nagrywanie transmisji strumieniowej audio z internetowego radia
- 3. Zamiast tego przyciski radiowe wyglądają jak przyciski.
- 4. Przyciski radiowe w bootstrapie.form-horizontal
- 5. 3D w WinForms?
- 6. WinForms: Alternatywa dla SplitContainer?
- 7. Aplikacja WinForms w MonoDevelop
- 8. WinForms forma zamarza
- 9. Oprawa OneWay na WinForms?
- 10. Struktura obiektu WinForms
- 11. WinForms - niewłaściwy rozmiar forma
- 12. C# WinForms ErrorProvider Control
- 13. Silverlight Hosted in Winforms
- 14. Wielokrotny wybór na WinForms
- 15. Używanie XAML w WinForms
- 16. WindowLicker dla WinForms .NET?
- 17. wiąże w WinForms rozwijane
- 18. Cykl życia WinForms event
- 19. Umieszczanie XNA w WinForms
- 20. Autoryzacja elementów interfejsu użytkownika w .NET WinForms
- 21. Dlaczego nie mogę wywołać zdarzenia `change` radia za pomocą jquery?
- 22. Jak zaimplementować kontrolę przycisku radia XAML za pomocą źródła ObservableCollection?
- 23. Przeglądarka internetowa wyłączyć wszystkie wyjścia audio - z radia internetowego YouTube
- 24. Czy możesz mieć obraz jako błyszczący przycisk radia?
- 25. JQuery Dodaj zdarzenie kliknięcia do tekstu wprowadzania radia
- 26. Przyciski radiowe Yii
- 27. Okrągłe Przyciski Grupa Zobacz
- 28. UIToolBar - wyłącz przyciski
- 29. Przyciski bezgraniczne z Androidem
- 30. jQuery UI Dialog przyciski