vb.net中listbox单击事件的问题
如何将一个listbox1中的内容,单击左键将选中项加载到listbox2中,单击右键将选中项加载到listbox3中,求代码...
如何将一个listbox1中的内容,单击左键将选中项加载到listbox2中,单击右键将选中项加载到listbox3中,求代码
展开
3个回答
展开全部
Private Sub ListBox1MouseDown(sender As Object, e As MouseEventArgs) _
Handles ListBox1.MouseDown
If e.Button = MouseButtons.Right Then
Dim h As Integer = ListBox1.ItemHeight
Dim rect As New Rectangle(0, 0, ListBox1.ClientSize.Width, h)
For i As Integer = 0 To ListBox1.Items.Count - 1
If rect.Contains(e.Location) Then
ListBox1.SelectedIndex = i + ListBox1.TopIndex
ListBox3.Items.Add(ListBox1.SelectedItem)
Exit For
Else
rect.Y += h
End If
Next
ElseIf e.Button = MouseButtons.Left Then
ListBox2.Items.Add(ListBox1.SelectedItem)
End If
End Sub
要实现右键发送内容,首先要计算右键时鼠标的坐标在哪一行上面,实现右键选中,然后才能获取正确的行内容。
更多追问追答
追问
首先谢谢您的程序让我实现了右键选中,但是不知道为何,选中之后再listbox2和listbox3中添加的不是所选中的内容,显示的是system.data.datarowview,选中几个显示的都是这个,不知道是为什么。求指教
追答
添加的内容不是所选内容,你在
ListBox3.Items.Add(ListBox1.SelectedItem)
ListBox2.Items.Add(ListBox1.SelectedItem)
这两行上分别下一个断点,在VS上试运行程序,左键和右键操作一下,在上面两行代码的伤程序会断下来,检查一下SelectedItem的值是什么。
不过我猜测,你的ListBox1应该是绑定了数据库,那么代码要稍作修改;
ListBox3.Items.Add(CType(ListBox1.SelectedItem, String))
ListBox2.Items.Add(CType(ListBox1.SelectedItem, String))
展开全部
代码如下:
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
List2.AddItem List1.Text
ElseIf Button = 4 Then
List3.AddItem List1.Text
End If
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
List2.AddItem List1.Text
ElseIf Button = 4 Then
List3.AddItem List1.Text
End If
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 10
ListBox1.Items.Add(i)
Next
End Sub
Private Sub ListBox1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
If (e.Button = Windows.Forms.MouseButtons.Left) Then
ListBox2.Items.Add(ListBox1.SelectedItem)
ElseIf (e.Button = Windows.Forms.MouseButtons.Right) Then
ListBox3.Items.Add(ListBox1.SelectedItem)
End If
End Sub
End Class
但是交互存在不合理之处,左击时选中同时加载到listbox2中无法避免.除非Mounsedown事件在另一个控件上发生.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 10
ListBox1.Items.Add(i)
Next
End Sub
Private Sub ListBox1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
If (e.Button = Windows.Forms.MouseButtons.Left) Then
ListBox2.Items.Add(ListBox1.SelectedItem)
ElseIf (e.Button = Windows.Forms.MouseButtons.Right) Then
ListBox3.Items.Add(ListBox1.SelectedItem)
End If
End Sub
End Class
但是交互存在不合理之处,左击时选中同时加载到listbox2中无法避免.除非Mounsedown事件在另一个控件上发生.
更多追问追答
追问
调试您给的程序出现了两个问题:一是未实现左击时添加到listbox3光标未移动,二是在单击添加时,在listbox2和listbox3中只是添加上‘system.data.datarowview’这行内容,选中的内容并未添加上,想请教一下是为何
追答
你传程序附件帮你看看,我不知道运行结果会如你所述,好像说的不是一回事.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询