C# 具有SqlByte数据类型的复选框的.NET bind checked属性
这失败了:C# 具有SqlByte数据类型的复选框的.NET bind checked属性,c#,types,bindingsource,C#,Types,Bindingsource,这失败了: dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlag"); 很可能是因为AutomaticFlag的定义如下: public SqlByte AutomaticFlag { get; set; } SQL Server很小。原因是我不仅仅需要0和0作为值 如果该值为1,则需要检查我,对于所有其他值,则需要取消选中 我想到的一件事是在我的类中创建一个额外的属性AutomaticFlagBoole
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlag");
很可能是因为AutomaticFlag的定义如下:
public SqlByte AutomaticFlag { get; set; }
SQL Server很小。原因是我不仅仅需要0和0作为值
如果该值为1,则需要检查我,对于所有其他值,则需要取消选中
我想到的一件事是在我的类中创建一个额外的属性AutomaticFlagBoolean,并检查AutomaticFlag并绑定到新属性
这是我尝试过的,但我总是出错:
private SqlByte _automaticFlag;
public SqlByte AutomaticFlag
{
get { return _automaticFlag; }
set
{
if (_automaticFlagBoolean)
{
_automaticFlag = 1;
}
else
{
_automaticFlag = 0;
}
}
}
private bool _automaticFlagBoolean;
public bool AutomaticFlagBoolean
{
get
{
if (_automaticFlag == 1)
{
return _automaticFlagBoolean = true;
}
else
{
return _automaticFlagBoolean = false;
}
}
set { _automaticFlagBoolean = value; }
}
这是我的装订:
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlagBoolean");
复选框控件需要一个用于绑定的布尔值 尝试使用局部变量保存该值:
private SqlByte _automaticFlag;
private bool _automaticFlagBoolean;
public SqlByte AutomaticFlag
{
get { return _automaticFlag; }
set
{
_automaticFlag = value;
_automaticFlagBoolean = (_automaticFlag != 0);
}
}
public bool AutomaticFlagBoolean
{
get
{
return _AutomaticFlagBookean;
}
set { _automaticFlagBoolean = value;
if (_automaticFlagBoolean) {
_automaticFlag = 1;
} else {
_automaticFlag = 0;
}
}
}
然后按如下方式绑定:
dtaAutomaticFlag.DataBindings.Add("Checked", BndSource, "AutomaticFlagBoolean");
您的类也应该实现,但这超出了您的问题的范围。我将绑定到dtaAutomaticFlag.DataBindings.Add的内容?我用您的建议尝试的内容更新了我的问题,但它不起作用。我总是说谎value@e4rthdog我更新了我的答案。这里有一些与设计有关的问题,但我的回答应该可以防止递归,并且应该允许您将布尔值绑定到复选框(尽管没有实现INotifyPropertyChanged,对属性的任何代码更改都不会反映到绑定控件。)我看到了我的缺点,于是我回复说:如果你也看一下,我将不胜感激……你是否愿意向tme exaclty解释一下你的设计顾虑?