【问题标题】:VB.net Forecolor in every listview item每个列表视图项中的 VB.net Forecolor
【发布时间】:2017-09-29 17:19:43
【问题描述】:

你们能帮我弄清楚如何在每个列表视图项中添加一些前景色吗?

我想要做的是:我想在列表视图中填充一些前景色,就像这样

例子:

> ColumnHeader1            ColumnHeader2     ColumnHeader3
> Executive(W/Forecolor)    texttexttext     texttexttexttext
> Employee(Plain w/out FC)  texttexttext     texttexttexttext

这是我的代码:

Private Sub loadRemarks()
    Try
        jonsqlcon.Close()
        jonsqlcon.ConnectionString = dllConstring
        jonsqlcon.Open()

        Dim selStaff As New SqlDataAdapter("SELECT * FROM StaffMember WHERE Staff_IDNo ='" & Notification.lblStaffID.Text & "'", jonsqlcon)
        Dim setStaff As New DataSet
        Dim accLvl As String
        selStaff.Fill(setStaff)
        accLvl = setStaff.Tables(0).DefaultView.Item(0).Item("AccessLVL").ToString

        If accLvl = "2" Then
            ListView1.ForeColor = Color.Aqua
        End If

        Dim loadChat As New SqlCommand("SELECT * FROM RemarksConvo WHERE Application_ID = '" & ClientAccountStatusViewer.txtClientID.Text & "' AND Room ='" & lvlStorage.Text & "'", jonsqlcon)
        reader = loadChat.ExecuteReader

        ListView1.Items.Clear()
        Do While reader.Read = True
            list = ListView1.Items.Add(reader(3).ToString)
            list.SubItems.Add(reader(4).ToString)
            list.SubItems.Add(reader(5).ToString)
            list.SubItems.Add(reader(6).ToString)
        Loop
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End Try
End Sub

【问题讨论】:

  • 这是一个 WinForms ListView 吗?
  • 是的,先生,这是一个 WindowsForm 列表视图
  • 你能解释一下你的代码的一些细节吗?表 StaffMember 和 RemarksConvo 有什么关系?您如何确定 RemarksConvo 中的记录与高管和员工相关?
  • 几个月前我用组合框的背景色做了这个。我通过处理 ComboBox.DrawItem 事件并定义结构 ColoredComboBoxItem 来做到这一点。也许这个链接会帮助你:vbforums.com/…
  • 是我正在获取并获取用户访问级别的 StaffMember,而 RemarksConvo 它是填充列表视图的查询

标签: vb.net listview


【解决方案1】:

首先要担心的是代码的 Sql 注入问题。不要使用字符串连接来构建查询文本,而始终使用参数化文本。不仅您的命令更清晰,而且黑客无法篡改您的文本以对您的数据库造成严重破坏。

第二。您可以通过在两个表之间执行连接来获取有关您的评论作者级别的信息。两个表中的 Staff_IDNo 字段将备注中的记录链接到带有备注作者级别信息的表

最后,ListViewItem(ListView.Items.Add 返回的对象)支持 ForeColor 属性,您可以在将项目添加到列表视图时简单地逐行设置颜色

 Dim loadChat As New SqlCommand("SELECT r.*, s.AccessLVL FROM RemarksConvo r
                                 JOIN StaffMember s ON s.Staff_IDNo = r.Staff_IDNo
                                 WHERE r.Application_ID = @appId
                                       AND r.Room = @room", jonsqlcon)
 loadChat.Parameters.Add("@appId", SqlDbType.NVarChar).Value = ClientAccountStatusViewer.txtClientID.Text 
 loadChat.Parameters.Add("@room", SqlDbType.NVarChar).Value = lvlStorage.Text)
 reader = loadChat.ExecuteReader
 ListView1.Items.Clear()
  Do While reader.Read
      list = ListView1.Items.Add(reader(3).ToString)
      list.ForeColor = If(reader("AccessLvl").ToString = "2", Color.Acqua, SystemColors.WindowText)
      list.SubItems.Add(reader(4).ToString)
      list.SubItems.Add(reader(5).ToString)
      list.SubItems.Add(reader(6).ToString)
 Loop

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多