[.NET] 滑鼠事件的問題
請輸入專案類型(網站專案或者應用程式專案):
不好意思用這種標題,因為我不知道該怎麼形容,先說說我要寫的樣子
我想寫一個動作方式是,當我滑鼠按的的狀態下,如果有移動,那就會
把方塊填滿。
例如:
▉▉▉▉▉▉▉▉▉ ← 這是原本的顏色
▉▉▉▉▉▉▉▉▉ ← 在第一隔點左鍵並且按住不放
.
▉▉▉▉▉▉▉▉▉ ← 在按住的狀態下往右拉
.
▉▉▉▉▉▉▉▉▉ ← 在第三格再次按下
.
▉▉▉▉▉▉▉▉▉ ← 在按住的狀態往右拉三格
.
以上是我希望的動作方式,不曉得不知道有沒有人看的懂
那我後來的寫法是設定一個共用的滑鼠正被按下的旗標currentBtnFlag,
然後在滑鼠按下的事件裡面把它設為True,在滑鼠被放開的時候
又設回False,然後在滑鼠進入的事件(MouseEnter)下判斷滑鼠是
否被按下,是的話則進去,並且做Not方塊已經被選取的旗標,如
果方塊被選取旗標是True,則方塊顏色是紅色,如果是False則方
塊顏色是白色。不曉得有沒有人看的懂 ~"~ 以下附上我的程式碼
Public Class btnTest
Inherits Button
Private _beSelect As Boolean
Public Property BeSelect()
Get
Return _beSelect
End Get
Set(ByVal value)
_beSelect = value
End Set
End Property
Private Sub InitializeComponent()
Me.SuspendLayout()
Me.ResumeLayout(False)
End Sub
End Class
Public Class Form1
Public Function setBtn() As btnTest
Dim btn As New btnTest
btn.Width = 50
btn.Height = 40
btn.Enabled = True
btn.Visible = True
btn.BeSelect = False
btn.BackColor = Color.White
Return btn
End Function
Public Shared currentBtnFlag As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim btnReg As New btnTest
currentBtnFlag = False
btnReg.Visible = False
Dim btnArray(9) As btnTest
For i = 0 To btnArray.GetUpperBound(0)
btnArray(i) = setBtn()
btnArray(i).Top = 100
btnArray(i).Left = btnArray(i).Width * i
btnArray(i).Tag = i
Me.Controls.Add(btnArray(i))
AddHandler btnArray(i).MouseDown, AddressOf btnReg_MouseDown
AddHandler btnArray(i).MouseUp, AddressOf btnReg_MouseUp
AddHandler btnArray(i).MouseEnter, AddressOf btnReg_MouseEnter
Next
Me.Width = btnArray.GetUpperBound(0) * btnArray(0).Width + 60
End Sub
Private Sub btnReg_MouseDown(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Dim i As Integer
Dim btnReg As btnTest
btnReg = CType(sender, btnTest)
i = btnReg.Tag
'btnReg.Text = TextBox1.Text
btnReg.BeSelect = Not btnReg.BeSelect
If btnReg.BeSelect = True Then
btnReg.BackColor = Color.Blue
Else
btnReg.BackColor = Color.White
End If
currentBtnFlag = True
'MsgBox("按鈕" & i + 1 & "被按")
'TextBox1.Text = currentBtnFlag
End Sub
Private Sub btnReg_MouseUp(ByVal sender As System.Object, ByVal e As
System.EventArgs)
currentBtnFlag = False
'MsgBox(currentBtnFlag)
End Sub
Private Sub btnReg_MouseEnter(ByVal sender As System.Object, ByVal e As
System.EventArgs)
'TextBox1.Text = currentBtnFlag
Dim i As Integer
Dim btnReg As btnTest
btnReg = CType(sender, btnTest)
If currentBtnFlag = True Then
btnReg.BeSelect = Not btnReg.BeSelect
If btnReg.BeSelect = True Then
btnReg.BackColor = Color.Blue
Else
btnReg.BackColor = Color.White
End If
End If
End Sub
End Class
結果寫了之後發現,當我按下滑鼠之後,進入滑鼠按下事件,
卻不會執行滑鼠進入事件,那如果我想寫這種方式,到底該怎
麼寫呢 ~"~
希望各位前輩看的懂 ~"~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.19.99