vb.net中listbox单击事件的问题

如何将一个listbox1中的内容,单击左键将选中项加载到listbox2中,单击右键将选中项加载到listbox3中,求代码... 如何将一个listbox1中的内容,单击左键将选中项加载到listbox2中,单击右键将选中项加载到listbox3中,求代码 展开
 我来答
风中的奶牛
推荐于2016-10-14 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:113万
展开全部
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))
储运天天
2013-09-14 · TA获得超过204个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:230万
展开全部
代码如下:
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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neuyangjian
2013-09-14 · TA获得超过114个赞
知道答主
回答量:83
采纳率:0%
帮助的人:40.9万
展开全部
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事件在另一个控件上发生.
更多追问追答
追问
调试您给的程序出现了两个问题:一是未实现左击时添加到listbox3光标未移动,二是在单击添加时,在listbox2和listbox3中只是添加上‘system.data.datarowview’这行内容,选中的内容并未添加上,想请教一下是为何
追答
你传程序附件帮你看看,我不知道运行结果会如你所述,好像说的不是一回事.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式