【发布时间】:2021-03-11 16:07:40
【问题描述】:
有没有办法从 CheckedListBox 覆盖 GetItemCheckState(i)?我正在尝试创建一个具有完全相同的自定义 CheckedListBox 的类,但是当我调用 GetItemCheckState(i) 而不是返回字符串 Checked 或 Unchecked 我希望它返回 bool true 或 false .
Visual Studio 告诉我 override 修饰符对此项无效,有什么办法解决这个问题吗?
[编辑] 我找到了一个解决方法,但我不确定它是否会导致某种问题,我不知道它是否是最优雅的解决方案,所以几乎还是同样的问题,有更好的解决方法吗?
我做了什么:
public class ExCheckedListBox : CheckedListBox
{
public bool GetItemCheckState2(int index)
{
string aux = (this.GetItemCheckState(index)).ToString();
if(aux == "Checked")
{
return true;
}
else if(aux == "Unchecked")
{
return false;
}
return false;
}
}
【问题讨论】:
-
嘿,艾米,您能帮我一下吗,让我知道您使用的是什么技术? Windows 窗体、WPF ASP.net、Asp.netcore、xamarin ?您在 MSDN 上使用的特定复选框的链接将非常有帮助
-
Visual Studio 上的 C# .NET Framework 4.7.2 Windows 窗体
-
它不返回字符串“Checked”/“Unchecked”。您正在通过调用
ToString()创建字符串。按预期使用CheckStateenum 会更优雅。转换为 bool 可以像bool b = GetItemCheckState(index) != CheckState.Unchecked;一样简单 -
GetItemChecked(#)返回一个布尔值。GetItemCheckState(#)返回一个枚举。 -
所以我可以
method(list.GetItemCheckState(0) != CheckState.Unchecked);并且该方法将正确接收布尔值?
标签: c# overriding checkedlistbox