mirror of
https://github.com/netchx/netch.git
synced 2026-03-14 17:43:18 +08:00
87 lines
1.6 KiB
C#
87 lines
1.6 KiB
C#
namespace Netch.Forms;
|
|
|
|
public class SyncGlobalCheckBox : CheckBox
|
|
{
|
|
public SyncGlobalCheckBox()
|
|
{
|
|
AutoCheck = false;
|
|
OnSyncGlobalChanged();
|
|
}
|
|
|
|
private bool _syncGlobal;
|
|
|
|
private bool _globalValue;
|
|
|
|
public bool SyncGlobal
|
|
{
|
|
get => _syncGlobal;
|
|
set
|
|
{
|
|
if (value == _syncGlobal)
|
|
return;
|
|
|
|
_syncGlobal = value;
|
|
|
|
OnSyncGlobalChanged();
|
|
}
|
|
}
|
|
|
|
public bool GlobalValue
|
|
{
|
|
get => _globalValue;
|
|
set
|
|
{
|
|
if (value == _globalValue)
|
|
return;
|
|
|
|
_globalValue = value;
|
|
|
|
if (SyncGlobal)
|
|
Checked = value;
|
|
}
|
|
}
|
|
|
|
protected override void OnClick(EventArgs e)
|
|
{
|
|
if (Checked == GlobalValue)
|
|
{
|
|
SyncGlobal = !SyncGlobal;
|
|
if (SyncGlobal)
|
|
return;
|
|
}
|
|
|
|
Checked = !Checked;
|
|
base.OnClick(e);
|
|
}
|
|
|
|
public bool? Value
|
|
{
|
|
get => _syncGlobal ? null : Checked;
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
SyncGlobal = true;
|
|
}
|
|
else
|
|
{
|
|
SyncGlobal = false;
|
|
Checked = (bool)value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnSyncGlobalChanged()
|
|
{
|
|
if (_syncGlobal)
|
|
{
|
|
Font = new Font(Font, FontStyle.Regular);
|
|
BackColor = SystemColors.Control;
|
|
}
|
|
else
|
|
{
|
|
Font = new Font(Font, FontStyle.Bold | FontStyle.Italic);
|
|
BackColor = Color.Yellow;
|
|
}
|
|
}
|
|
} |