如何在vb中的列表框中的文本后断行

时间:2014-06-02 00:49:58

标签: vb.net

嘿伙计我需要一些帮助,基本上我终于让我的查询按钮工作,所以现在当我在文本框中输入内容并按下“查询”按钮时,我的访问数据库中的信息会显示在我的列表中框。

现在我需要做的就是在每个标题后打破这一行。例如,使用我当前的代码,信息显示如下:

  

达兰特特伦斯,4045550711,11111,e.durrant @ live.com。

我想最后一个信息块将是这样的信息下显示的“Notes”标题......

Durrant,Eric,4045558999,111111,e.durrant@live.com
This user needed a password reset. I also updated some information in his account.

因此,我需要在其他信息下显示“注释”部分。我尝试了不同的换行技术,如& vbCrLf&,但仍然无法正常工作。任何见解将不胜感激。

Dim SQL As String = ("SELECT FirstName, LastName, Phone, UserID, 
    Email, OtherEmail, Notes FROM info WHERE FirstName = ?")

Using cmd As New OleDbCommand(SQL, con)
    cmd.Parameters.AddWithValue("@p1", txtFirstName.Text)
    cmd.Parameters.AddWithValue("@p2", txtLastName.Text)
    cmd.Parameters.AddWithValue("@p3", txtPhone.Text)
    cmd.Parameters.AddWithValue("@p4", txtUserID.Text)
    cmd.Parameters.AddWithValue("@p5", txtEmail.Text)
    cmd.Parameters.AddWithValue("@p6", txtOtherOptionTxt.Text)
    cmd.Parameters.AddWithValue("@p7", txtCallDetail.Text) 

    lbLogLaInfo.Items.Add(txtFirstName.Text)

    con.Open()

    Dim reader As OleDbDataReader
    reader = cmd.ExecuteReader()

    lbLogLaInfo.Items.Clear()

    While reader.Read()
        lbLogLaInfo.Items.Add(String.Format("{0},{1},{2},{3},{4},{5},{6}", _
            reader.Item(0).ToString, reader.Item(1).ToString, reader.Item(2).ToString, _
            reader.Item(3).ToString, reader.Item(4).ToString, reader.Item(5).ToString(), _
            reader.Item(6).ToString()))

        Console.WriteLine("{0} = {6}", reader("FirstName"), reader("LastName"), _
            reader("Phone"), reader("UserID"), reader("Email"), reader("OtherEmail"), ("Notes"))
    End While

    reader.Close()
End Using'

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找Environment.Newline

Dim Result = String.Format("{0}{1}{2}", Line, Environment.Newline, Line2)

继续发表评论......

lbLogLaInfo.Items.Add(String.Format("{1},{0},{2},{0},",
                                    Environment.NewLine,
                                    reader.Item(0),
                                    reader.Item(1)))

注意第一个参数,“格式字符串”现在是1,0,2,0。数字指的是以下变量的位置,从0开始。字符串看起来像"Item0,\n,Item1,\n".ToString()会自动隐含。

如果在添加每一行后添加断点并检查lbLogLaInfo.Items的内容,您将看到嵌入了新行的字符串。

我认为您可能还会遇到第二个问题,即Listbox控件doesn't support多行元素。

选项1

对于日志记录,要么使用TextBox,要么使用RichTextBox,因为它可以提供更多控制,支持滚动到最后等等...

RtLog.SelectionStart = RtLog.TextLength
RtLog.SelectionColor = Color.Navy ''This line is optional, just showing capabilities
RtLog.SelectedText = String.Format("{1},{0},{2},{0},",
                                    Environment.NewLine,
                                    reader.Item(0),
                                    reader.Item(1))
RtLog.ScrollToCaret()

选项2

你可以欺骗并只添加多个条目

lbLogLaInfo.Items.Add(reader.Item(0).ToString)
lbLogLaInfo.Items.Add(reader.Item(1).ToString)

这将在ListBox的多行上显示,但是更难以处理用户点击一行并识别它是哪一行(假设您使用该功能)。

答案 1 :(得分:1)

您可以将vbCrLf添加到String.Format以添加换行符,如下所示:

lbLogLaInfo.Items.Add(String.Format("{0},{1},{2},{3},{4},{5}" & vbCrLf & "{6}", _
    reader.Item(0).ToString, reader.Item(1).ToString, reader.Item(2).ToString, _
    reader.Item(3).ToString, reader.Item(4).ToString, reader.Item(5).ToString(), _
    reader.Item(6).ToString()))

String.Format指定要使用的布局,以便将新行放在方法的format部分。

然而,如果@Basic说的是真的

  

...列表框控件不支持多行...

除非您使用其他控件,否则您可能会遇到此问题。