* UIRadioButton: 修复CheckedChanged事件

This commit is contained in:
Sunny 2022-12-21 21:24:17 +08:00
parent 354a30dcb7
commit c846d340a1

View File

@ -21,6 +21,7 @@
* 2020-04-25: V2.2.4 * 2020-04-25: V2.2.4
* 2021-04-26: V3.0.3 CheckedChanged * 2021-04-26: V3.0.3 CheckedChanged
* 2022-03-19: V3.1.1 * 2022-03-19: V3.1.1
* 2022-12-21: V3.3.0 CheckedChanged事件
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -137,30 +138,33 @@ namespace Sunny.UI
get => _checked; get => _checked;
set set
{ {
_checked = value; if (_checked != value)
if (value)
{ {
try _checked = value;
if (value)
{ {
if (Parent == null) return; try
List<UIRadioButton> buttons = Parent.GetControls<UIRadioButton>();
foreach (var box in buttons)
{ {
if (box == this) continue; if (Parent == null) return;
if (box.GroupIndex != GroupIndex) continue; List<UIRadioButton> buttons = Parent.GetControls<UIRadioButton>();
if (box.Checked) box.Checked = false; foreach (var box in buttons)
{
if (box == this) continue;
if (box.GroupIndex != GroupIndex) continue;
if (box.Checked) box.Checked = false;
}
}
catch (Exception ex)
{
Console.WriteLine(@"UIRadioBox click error." + ex.Message);
} }
} }
catch (Exception ex)
{
Console.WriteLine(@"UIRadioBox click error." + ex.Message);
}
}
ValueChanged?.Invoke(this, _checked); ValueChanged?.Invoke(this, _checked);
CheckedChanged?.Invoke(this, new EventArgs()); CheckedChanged?.Invoke(this, new EventArgs());
Invalidate(); Invalidate();
}
} }
} }
@ -231,7 +235,7 @@ namespace Sunny.UI
/// <param name="e">参数</param> /// <param name="e">参数</param>
protected override void OnClick(EventArgs e) protected override void OnClick(EventArgs e)
{ {
if (!ReadOnly) if (!ReadOnly && !Checked)
{ {
Checked = true; Checked = true;
} }