这样的效果是如何实现的?

billow_chentao 2009-06-06 01:37:26
在WINDOWS的事件查看器里,主窗口中ListView控件里里显示了所有的日志记录,当双击某一行记录时,跳出一个“事件属性”窗口,属性窗口中有两个按钮上一条和下一条,当点了这两个按钮后,发现主窗口中ListView控件里的当前行在同步变化。
我就想问这个同步变化主窗口里的当前记录行是怎么实现的?

...全文
28 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzuomin 2009-06-06
  • 打赏
  • 举报
回复
方法有很多,下面只列出一种,lz把代码拷贝试试看吧。
Public Class Form1

Private lstView As ListView

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lstView = New ListView With {.View = View.Details, .Dock = DockStyle.Fill, .HideSelection = False, .FullRowSelect = True}
AddHandler lstView.DoubleClick, AddressOf lstView_DoubleClick
lstView.Columns.Add("ID")
lstView.Columns.Add("Info")
For i As Integer = 0 To 50
Dim item As ListViewItem = lstView.Items.Add(i.ToString)
item.SubItems.Add("Details:" + Now.Ticks.ToString)
Threading.Thread.Sleep(20)
Next
Me.Controls.Add(lstView)
End Sub

Private Sub lstView_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim frm As New frmDetail(lstView)
frm.ShowDialog()
End Sub
End Class

Public Class frmDetail
Inherits System.Windows.Forms.Form

Private btnUp As New Button
Private btnDown As New Button
Private txtBox As New TextBox
Private mListView As ListView

Public Sub New(ByRef lstView As ListView)
Call init()
mListView = lstView
If mListView.SelectedItems.Count > 0 Then
txtBox.Text = mListView.SelectedItems(0).SubItems(1).Text
End If
End Sub

Private Sub init()
btnUp = New Button With {.Text = "上一条", .Location = New Point(10, 5)}
btnDown = New Button With {.Text = "下一条", .Location = New Point(100, 5)}
txtBox = New TextBox With {.Multiline = True, .ScrollBars = ScrollBars.Vertical, .Location = New Point(10, 40), .Size = New Size(200, 100)}
AddHandler btnUp.Click, AddressOf Up
AddHandler btnDown.Click, AddressOf Down
Me.Controls.Add(btnUp)
Me.Controls.Add(btnDown)
Me.Controls.Add(txtBox)
End Sub

Private Sub Up(ByVal sender As Object, ByVal e As EventArgs)
Dim index As Integer = mListView.SelectedItems(0).Index
If index > 0 Then
index -= 1
mListView.SelectedItems.Clear()
mListView.Items(index).Selected = True
mListView.EnsureVisible(index)
txtBox.Text = mListView.SelectedItems(0).SubItems(1).Text
End If
End Sub

Private Sub Down(ByVal sender As Object, ByVal e As EventArgs)
Dim index As Integer = mListView.SelectedItems(0).Index
If index < mListView.Items.Count - 1 Then
index += 1
mListView.SelectedItems.Clear()
mListView.Items(index).Selected = True
mListView.EnsureVisible(index)
txtBox.Text = mListView.SelectedItems(0).SubItems(1).Text
End If
End Sub

End Class
hanjs 2009-06-06
  • 打赏
  • 举报
回复
能得到主窗口的句柄就能操作里面的内容了吧.

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧