作者SpiritKnight (无心)
看板Visual_Basic
标题[.NET] 滑鼠事件的问题
时间Mon Oct 12 20:54:48 2009
请输入专案类型(网站专案或者应用程式专案):
不好意思用这种标题,因为我不知道该怎麽形容,先说说我要写的样子
我想写一个动作方式是,当我滑鼠按的的状态下,如果有移动,那就会
把方块填满。
例如:
▉▉▉▉▉▉▉▉▉ ← 这是原本的颜色
▉▉▉▉▉▉▉▉▉ ← 在第一隔点左键并且按住不放
.
▉▉▉▉▉▉▉▉▉ ← 在按住的状态下往右拉
.
▉▉▉
▉▉▉▉▉▉ ← 在第三格再次按下
.
▉▉▉▉▉▉▉▉▉ ← 在按住的状态往右拉三格
.
以上是我希望的动作方式,不晓得不知道有没有人看的懂
那我後来的写法是设定一个共用的滑鼠正被按下的旗标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