当我使用DragDrop时,如何检查CheckedListBox中的项目

时间:2012-03-16 07:15:03

标签: c#

我在CheckedListBox上使用拖放功能,用于添加外部文件和更改项目的顺序。这两件事现在都在发挥作用。但问题是,现在你无法选中一个方框。

你检查它的那一刻 - 它被取消选中。我认为它与DragDrop事件处理程序有关。如果我在属性中打开或关闭CheckOnClick并不重要(我希望它关闭,因为您应该能够选择一个项目而不检查它)。

我希望在点击(选中后)时检查该项目,并且我希望它在框中上下移动时保持检查

以下是我使用的两个处理程序:

private void missionsBox_MouseDown(object sender, MouseEventArgs e)
{
      if (missionsBox.SelectedItem == null) return;
            missionsBox.DoDragDrop(missionsBox.SelectedItem, DragDropEffects.Move);
}

private void missionsBox_DragDrop(object sender, DragEventArgs e)
{
    Point point = missionsBox.PointToClient(new Point(e.X, e.Y));
    int index = missionsBox.IndexFromPoint(point);
    object data = e.Data.GetData(typeof(string));
    missionsBox.Items.Remove(data);
    missionsBox.Items.Insert(index, data);

}

非常感谢这里的任何帮助。我是个菜鸟。

1 个答案:

答案 0 :(得分:0)

private void missionsBox_DragDrop(object sender, DragEventArgs e)
{
    Point point = missionsBox.PointToClient(new Point(e.X, e.Y));
    int index = missionsBox.IndexFromPoint(point);
    object data = e.Data.GetData(typeof(string));
    missionsBox.Items.Remove(data);
    missionsBox.Items.Insert(index, data);

    //try this?
    missionsBox.Items[index + 1].Selected = True;

}