0

关于 CheckListBox 的信息很少,我想知道人们是否没有使用其他东西。

我正在尝试对 MouseUp 事件使用条件语句来确定选中的复选框项目是选中还是未选中。以下代码不起作用:

if (clBox.SelectedItem == CheckState.Checked)
{
   //Do something
}

如何确定是否选中了选定的 CheckListBox 项?我必须使用 MouseUP 事件,因为在添加到列表时可能会选中某些框时,使用 ItemCheck 事件很麻烦。否则我最终会触发事件。但是,当他们取消选中该框时,我如何确保某些事情是撤消的,而不是当他们选中它时完成的呢?

编辑:忘了说这是 Windows 窗体。

4

3 回答 3

3

您可以检查CheckedItems集合以查找 SelectedItem 是否包含在其中。尝试这样的事情。

private void clBox_MouseUp(object sender, MouseEventArgs e)
{
    if (clBox.CheckedItems.Contains(clBox.SelectedItem))
    {
        MessageBox.Show("Test");
    }
}
于 2014-03-13T06:27:47.987 回答
1

我假设您在这里关注 WinForms CheckedListBox (CLB)。我认为解决您的问题的更好方法是附加到 CLB 的“ItemCheck”事件。

  private void AttachEvents()
  {
     // ....
     this.checkedListBox.ItemCheck += CheckedListBoxOnItemCheck;
  }

  private void CheckedListBoxOnItemCheck(object sender, ItemCheckEventArgs itemCheckEventArgs)
  {
     var item = checkedListBox.Items[itemCheckEventArgs.Index];
     System.Diagnostics.Debug.WriteLine("Item in question: " + item);
     System.Diagnostics.Debug.WriteLine("Previous check state: " + itemCheckEventArgs.CurrentValue);
     System.Diagnostics.Debug.WriteLine("New check state: " + itemCheckEventArgs.NewValue);
  }

根据您的应用需求,您还应该执行以下操作:

this.checkedListBox.CheckOnClick = true;

然后,您的 CLB 将按照大多数用户的预期运行。

问候,亚历克斯

于 2014-03-13T06:09:15.543 回答
0
    <asp:CheckBoxList ID="ck1" runat="server">
    <asp:ListItem Text ="1" Value ="1"></asp:ListItem>
    <asp:ListItem Text ="2" Value ="2"></asp:ListItem>
    <asp:ListItem Text ="3" Value ="3"></asp:ListItem>
    <asp:ListItem Text ="4" Value ="4"></asp:ListItem>
    <asp:ListItem Text ="5" Value ="5"></asp:ListItem>
    </asp:CheckBoxList>

这是您的清单框..现在来回答您的问题..

if (chk1.selectedvalue=="1")
{
}
elseif (chk1.selectedvalue=="2")
{
}
elseif (chk1.selectedvalue=="3") 
{
}
elseif (chk1.selectedvalue=="4")
{
}

现在您可以检查是否选中了哪个复选框

于 2014-03-13T05:55:02.723 回答