Vb.net 布尔变量和三状态复选框:如何最好地进行类型转换?

Vb.net 布尔变量和三状态复选框:如何最好地进行类型转换?,vb.net,vb6,Vb.net,Vb6,这是在VB6中实现的(也可能适用于VB.net) 复选框可以有三种状态(选中、未选中、灰色) 但我用它们来设置布尔变量(MuteSound等)。这绝对是一个只有两种状态的值。不幸的是,选中和未选中的值与真/假值不对应 所以,我不能有: bMuteSound=ChkMute.value .......... 如果你发现了,那就胡说八道 两种选择: 1.设置/读取复选框时强制该值。值为布尔值: bMuteSound=Checkbox.value=Checked Checkbox.value=Con

这是在VB6中实现的(也可能适用于VB.net)

复选框可以有三种状态(选中、未选中、灰色)

但我用它们来设置布尔变量(MuteSound等)。这绝对是一个只有两种状态的值。不幸的是,选中和未选中的值与真/假值不对应

所以,我不能有:

bMuteSound=ChkMute.value .......... 如果你发现了,那就胡说八道

两种选择: 1.设置/读取复选框时强制该值。值为布尔值:

bMuteSound=Checkbox.value=Checked


Checkbox.value=ConvertBooleanToCheckBox

布尔变量是否有默认值?如果是这样,那么如果框是灰色的,就不要更改变量,如果框不是灰色的,就将其更改为正确的值。

布尔变量是否有默认值?如果是这样,那么如果框是灰色的,就不要更改变量,如果框不是灰色的,就将其更改为正确的值。

一般来说,复选框也可以是灰色的并选中,因此您有4种可能的情况,只需使用2个布尔,就分离而言,您的处理代码不需要知道任何复选框,因此不应该传递灰色或非灰色状态,而应该只传递活动或非活动状态。

一般意义上,复选框也可以被灰显并选中,因此您有4种可能的情况,只需使用2个布尔值,在分离方面,您的处理代码不需要知道任何复选框,因此不应该传递灰色或非灰色状态,而应该只传递活动或非活动状态。

在我看来非常简单:

bMuteSound = abs(chkMute.Value)  
chkMute.Value = abs(bMuteSound)
Dim tsValue As VbTriState

'Conversions
tsValue = -Check1.Value
Check1.Value = -tsValue

在我看来很简单:

Dim tsValue As VbTriState

'Conversions
tsValue = -Check1.Value
Check1.Value = -tsValue

+1我喜欢这一行,因为它使用枚举类型的布尔转换(1=选中,0=未选中,2=灰色)。第二行很优雅!第一行不应该是:bMuteSound=-abs(chkMute.value)?也就是说,第一行的abs前面不应该有减号吗?(将选中的(1)转换为False(-1)。至少这是VB6中True等于的内容。虽然…-1或1在VB中也会转换为True,VB6不会很快改变;-)+1我喜欢这个,因为它使用枚举类型的布尔转换(1=选中,0=未选中,2=灰色)。第二行很优雅!第一行不应该是:bMuteSound=-abs(chkMute.value)?也就是说,第一行的abs前面不应该有减号吗?(将选中的(1)转换为False(-1)。至少这是VB6中True等于的。虽然…-1或1也将在VB中转换为True,并且VB6不会很快改变;-)事实上,处理代码不应该通过灰色/非灰色的圆,而应该通过布尔值。。。所以你需要转换。。。这就是问题的重点。。。我想你可能错过了?灰色状态并不意味着禁用。这仅仅意味着无法确定状态。事实上,处理代码不应该通过灰色/非灰色的圆形,而应该通过布尔值。。。所以你需要转换。。。这就是问题的重点。。。我想你可能错过了?灰色状态并不意味着禁用。这仅仅意味着国家无法确定。恐怕是迂腐。问题标题“varaiables”不是“variables”中的拼写错误。谢谢,除了迂腐,实际上可能有人在搜索“variables”。恐怕迂腐。问题标题“变量”而不是“变量”中的拼写错误。谢谢,除了迂腐,实际上可能有人在搜索“变量”。