【问题标题】:Override GetItemCheckState() from a checklistbox从复选框覆盖 GetItemCheckState()
【发布时间】:2021-03-11 16:07:40
【问题描述】:

有没有办法从 CheckedListBox 覆盖 GetItemCheckState(i)?我正在尝试创建一个具有完全相同的自定义 CheckedListBox 的类,但是当我调用 GetItemCheckState(i) 而不是返回字符串 CheckedUnchecked 我希望它返回 bool truefalse . 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() 创建字符串。按预期使用CheckState enum 会更优雅。转换为 bool 可以像 bool b = GetItemCheckState(index) != CheckState.Unchecked; 一样简单
  • GetItemChecked(#) 返回一个布尔值。 GetItemCheckState(#) 返回一个枚举。
  • 所以我可以method(list.GetItemCheckState(0) != CheckState.Unchecked); 并且该方法将正确接收布尔值?

标签: c# overriding checkedlistbox


【解决方案1】:

正如 LarsTech 和 Ben Voigt 所说,GetItemChecked(#)GetItemCheckState(index) != CheckState.Unchecked; 解决了我的问题。

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2011-02-21
    • 2013-07-11
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多