C#, VB.NET 如何在 Details 视图的 ListView 中加入链接?

Posted by Admin L in .NET Programming on 26-12-2021. Tags: , , ,

作者:牧山道人
原文地址:https://www.seeksunslowly.com/当前用户没有C#, VB.NET 如何在 Details 视图的 ListView 中加入链接?
转载请注明出处,谢谢。
_____________________________________

您是否有这样的需求:为了界面简洁,不想用上下文菜单或单独的按钮来操作 ListView 数据(假设 ListView 名为 lv,且 lv.View = View.Details,下同),取而代之的是直接在数据行中加入链接来操作?像这样:

这里直接给出今天研究出的完美方法(VB.NET 代码,C# 可直接参考):

第一步:在加载数据时让 SubItems 可以与 ListViewItem 使用不同的样式,并设置链接 SubItems 样式。代码:

For Each lvi As ListViewItem In lv.Items
lvi.UseItemStyleForSubItems = False
lvi.SubItems(1).ForeColor = Color.Blue
lvi.SubItems(1).Font = New Font(lvi.Font.Name, lvi.Font.Size, FontStyle.Underline)
Next

第二步:设置鼠标移至链接的指针样式。代码:

Private Sub lv_MouseMove(sender As Object, e As MouseEventArgs) Handles lv.MouseMove
Dim lvhti As ListViewHitTestInfo = lv.HitTest(e.Location)
If lvhti.SubItem Is Nothing Then
lv.Cursor = Cursors.Default
Else
If lvhti.SubItem.Text = “Remove” Then lv.Cursor = Cursors.Hand Else lv.Cursor = Cursors.Default
End If
End Sub

第三步:响应“链接”点击事件。代码:

Private Sub lv_MouseUp(sender As Object, e As MouseEventArgs) Handles lv.MouseUp
Dim lvhti As ListViewHitTestInfo = lv.HitTest(e.Location)
If lvhti.SubItem IsNot Nothing Then If lvhti.SubItem.Text = “Remove” Then MsgBox(lvhti.Item.Text) ‘ 此处显示出 ListViewItem.Text 仅用于测试,表示能取到想要的数据!
End Sub

至此,无论外观还是功能,以上代码都完全实现了在 ListView 中加入链接 SubItems。

【赞赏 / Reward】

微信         支付宝         PayPal

Post a comment