Files
netch/Netch/Forms/SyncGlobalCheckBox.cs
ChsBuffer 2d295a1449 [Features] Json Format Mode
New ModeEditForm
Refactors and Cleanup
Update nuget packages
2021-11-04 17:43:33 +08:00

92 lines
2.0 KiB
C#

using System;
using System.Drawing;
using System.Windows.Forms;
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;
}
}
}
}