我有一個ListView,其視圖設置爲LargeIcon。
我特別需要檢測何時通過用鼠標拖動圍繞它們的選擇框來選擇多個項目。 (例如,我不想知道何時通過CTRL + Click選擇項目)檢測是否通過拖動選擇了多個ListView項目
我以爲我可以簡單地通過跟蹤鼠標是否處於關閉狀態而它正在移動時顯示拖動來執行此操作,然後如果它是一個拖拽,然後我可以設置另一個變量來表明這一點。
在我下面的示例中,mouseDown
設置爲true,但是當我將鼠標放下並移動它時,isDrag
從未設置爲true,我看不到我做錯了什麼。
(編輯:isDrag
成爲真實的,如果我刪除if
子句是奇怪的,因爲我說mouseDown
肯定是真的)。
我意識到代碼比它需要的時間稍長,但它是爲了清晰起見。
bool mouseDown;
bool isDrag;
bool wasDrag;
private void listView1_MouseDown(object sender, MouseEventArgs args)
{
wasDrag = false;
mouseDown = true;
}
private void listView1_MouseMove(object sender, MouseEventArgs args)
{
if (mouseDown)
isDrag = true; // <-- Never becomes true, even though mouseDown is true
}
private void listView1_MouseUp(object sender, MouseEventArgs args)
{
if (isDrag)
wasDrag = true;
mouseDown = false;
isDrag = false;
}
我知道這將是一件愚蠢的事。請把我從痛苦中解救出來。
或者,如果有人知道更好的是檢測拖動選擇(什麼是適當的術語?),那麼我都是耳朵。
在你的mouseup中,獲取ListView1.SelectedItems屬性。一旦鼠標被釋放,任何在拖動過程中選擇的項目都應該在此屬性中可用。 – Alex
這將包括通過按住控件進行選擇的項目。我想要通過拖動專門選擇的項目。 – Equalsk
可能聽起來像一個愚蠢的問題,但我必須問它:你確定'listView1_MouseMove'方法實際上分配給'listview1'的'MouseMove'事件處理程序嗎?只需看看'InitializeComponent()'方法 –