winfrom ListBox根据鼠标位置选中项

本文探讨了两种在ListBox控件中选择项的方法:MouseClick事件和MouseDown事件。方法一使用MouseClick事件,当用户点击ListBox的某个项时,直接获取选中项并执行逻辑代码。方法二则在MouseDown事件中实现,通过遍历ListBox项来确定被点击的项。尽管两种方法都能达到目的,但作者认为MouseClick事件的方式更为简便。
摘要由CSDN通过智能技术生成

方法一、MouseClick事件

private void ListBox_MouseClick(object sender, MouseEventArgs e)
{
int index = base.IndexFromPoint(e.X, e.Y);
base.SelectedIndex = index;
if (base.SelectedIndex != -1)
{
//逻辑代码
}

    }

方法二、MouseDown事件

 private void PopUpListBox_MouseDown(object sender, MouseEventArgs e)
        {
            if (SelectItem != null)
            {
                GetItemAt(this, e.X,e.Y);
              //逻辑代码
            }
        }
        private object GetItemAt(ListBox listBox, int X, int Y)
        {
            try
            {
                object res = null;
                for (int i = 0; i < listBox.Items.Count; i++)
                {
                    System.Drawing.Rectangle r = listBox.GetItemRectangle(i);
                    if (r.Contains(new Point(X, Y)))
                    {
                        res = listBox.Items[i];
                        base.SelectedItem = listBox.Items[i];
                        break;
                    }
                }
                return res;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

总结:方法一更方便些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值