Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有SqlByte数据类型的复选框的.NET bind checked属性_C#_Types_Bindingsource - Fatal编程技术网

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解释一下你的设计顾虑?