我想將MouseEnter與MousePressed結合在標籤上。在VB.NET標籤上結合mouseEvents
Public Sub populateGrid()
lblTest.BackColor()
lblTest.BackColor = System.Drawing.Color.Red
gbWorkflow.Controls.Add(lblTest)
For j As Integer = 1 To 40
For i As Integer = 1 To 20
Dim L As New Label
L.Size = New Size(30, 30)
L.Text = "L:" + i.ToString + j.ToString
L.BackColor = Color.AliceBlue
Dim x, y As Integer
Dim loc As Point = gbWorkflow.Location
y = loc.Y * (i * 8) '- (gbWorkflow.Height + L.Size.Height) * i
x = loc.X * (j * 8)
L.Location = New Point(x, y)
gbWorkflow.Controls.Add(L)
AddHandler L.MouseEnter, AddressOf L_Enter
AddHandler L.MouseLeave, AddressOf L_Leave
Next
Next
End Sub
Private Sub L_Enter(ByVal sender As Object, ByVal e As System.EventArgs)
Dim TheLabel As Label = CType(sender, Label)
TheLabel.BackColor = Color.Red
End Sub
我的想法是創建一個觸發器上的MouseDown和改變布爾變量的值的方法。然後,我會使用該變量作爲條件將更改應用於標籤。但是,這似乎並沒有工作...
我如何以最佳方式實現這一目標?或者,根本?
僞代碼: 當鼠標輸入標籤:如果按下左mousebutton然後 做的東西與標籤
編輯: 它也有當mousebutton仍然按光標拖動到工作在幾個標籤。應該改變按下左按鈕時光標交叉的所有標籤。
我在編輯之前做過答案。關於您的編輯:當您按Label1上的按鈕時,按鈕事件與此Label1相關聯。如果你沒有釋放按下並移動鼠標;移動鼠標事件進入圖片(也與Label1關聯)。如果您想通過按下鼠標來影響其他控件,則必須依賴拖放式事件。即使在這種情況下,您也不能在「解壓按鈕」之前將新標籤貼到圖片上(什麼會「解鎖前一個事件」)。請讓你的想法更清楚,並儘量不要突然改變這個問題:) – varocarbas
我真的很抱歉沒有更清楚我想要達到什麼目標!我在一個groupbox(gbWorkFlow)中製作一個標籤網格。這個網格中的標籤應該是可標記的,並且應該可以通過點擊和拖動來標記它們。網格的X軸是日期,Y軸是百分比。用戶應該能夠在選擇適用於每個日期的百分比的日期間畫一條線,而不必單獨點擊每個標籤。這條線並不總是一條直線,這就是我試圖使這個解決方案起作用的原因。這是否澄清了我的問題? – TM89
從你說什麼,你在找什麼是:第一次點擊標籤(如我的原始答案建議...用戶不需要保持鼠標不變),移動到標籤2和一個新的點擊(設置一個新點)等等...(這就是繪圖工具通常如何工作的原因:儘可能多的點擊來繪製線條)。我已經用一個新的示例代碼編輯了我的答案(在閱讀你的解釋之前):看看它並讓我知道你的想法。 – varocarbas