【发布时间】:2021-04-14 23:40:16
【问题描述】:
我有一个富文本框,其中填充了 vb.net 上的 SqlServer 查询结果。结果水平连接所有项目,当到达richtextbox边距时,它将换行。
代码:
'Function of loading data into Datagridview
Private Sub entregue()
dgv1.Rows.Clear()
Cursor.Current = Cursors.WaitCursor
Dim consultando As New frm_aguarde_consultando
consultando.Show()
' Set cursor as hourglass
Application.DoEvents()
Dim ano, mes, dia As Integer
Dim var1data, var2data As Date
Dim dinicio, dfim As String
var1data = DateTimePicker1.Value '.ToString.Substring(0, 10)
dia = var1data.Day
mes = var1data.Month
ano = var1data.Year
dinicio = ano & "-" & mes & "-" & dia
var2data = DateTimePicker2.Value
dia = var2data.Day
mes = var2data.Month
ano = var2data.Year
dfim = ano & "-" & mes & "-" & dia
Using sqlcoon As SqlConnection = GetConnectionsql()
Dim READER As SqlDataReader
'ENTREGUE
Try
sqlcoon.Open()
Dim Query As String
Query = "select MOV_IDENTIFICACAO,MOV_PROTOCOLO,MOV_DATADOC,MOV_SITUACAO,MOV_DATAENTREGA,MOV_HORAENTREGA,MOV_SITEND_CODIGO
from movimento where MOV_DATADOC = '" & dinicio & "'
AND MOV_CLI_CODIGO = '" & txtcod.Text & "' AND MOV_SITUACAO = '" & "E" & "'
AND CAST(MOV_DATAENTREGA AS DATE) = '" & dfim & "' "
Dim COMMAND As SqlCommand = New SqlCommand(Query, sqlcoon)
READER = COMMAND.ExecuteReader
While READER.Read
Dim MOV_IDENTIFICACAO = READER("MOV_IDENTIFICACAO")
Dim MOV_DATADOC = READER("MOV_DATADOC")
Dim MOV_DATAENTREGA = READER("MOV_DATAENTREGA")
Dim MOV_PROTOCOLO = READER("MOV_PROTOCOLO")
Dim MOV_SITUACAO = READER("MOV_SITUACAO")
Dim MOV_SITEND_CODIGO = READER("MOV_SITEND_CODIGO")
dgv1.Rows.Add(MOV_IDENTIFICACAO, MOV_PROTOCOLO, MOV_DATADOC, MOV_SITUACAO, MOV_DATAENTREGA, MOV_SITEND_CODIGO)
End While
READER.Close()
sqlcoon.Close()
For Each linha In dgv1.Rows
Dim altura As Integer = 17
linha.height = altura
Next
If dgv1.Rows.Count >= 0 Then
' Set cursor as default arrow
Cursor.Current = Cursors.Default
' Hide the please wait form
consultando.Hide()
End If
Catch ex As SqlException
MessageBox.Show(ex.Message)
Finally
' sqlcoon.Dispose()
End Try
sqlcoon.Open()
Try
For r As Integer = 0 To dgv1.Rows.Count - 1
Dim COMMAND3 As SqlCommand
Dim READER3 As SqlDataReader
Dim Query_3 As String
Query_3 = "select IMOV_CODIGORECBTO from imovimento where IMOV_MOV_IDENTIFICACAO ='" & dgv1.Rows(r).Cells(0).Value.ToString & "'"
COMMAND3 = New SqlCommand(Query_3, sqlcoon)
READER3 = COMMAND3.ExecuteReader
While READER3.Read
Dim IMOV_CODIGORECBTO = READER3("IMOV_CODIGORECBTO")
'DataGridView1.Columns(6).HeaderCell.Value = "ID"
dgv1.Rows(r).Cells(6).Value = IMOV_CODIGORECBTO
End While
READER3.Close()
Next
dgv1.Sort(dgv1.Columns(6), ListSortDirection.Ascending)
sqlcoon.Close()
Catch ex As SqlException
MsgBox(ex.Message)
End Try
End Using
End Sub
'Function of loading data into Richtextbox
Private Sub preenchimento_rchrelatorio()
Dim entregue = "ENTREGUE"
rchrelatorio.Text += entregue & Environment.NewLine & Environment.NewLine
For r As Integer = 0 To dgv1.Rows.Count - 1
'richtextbox
rchrelatorio.Text += dgv1.Rows(r).Cells(0).Value & " "
Next
Dim totalentregue = "TOTAL: " & dgv1.Rows.Count
rchrelatorio.Text += Environment.NewLine & Environment.NewLine & totalentregue & Environment.NewLine & Environment.NewLine
end sub
结果:
如何增加这个富文本框的行间距,使其看起来像这样:
有没有办法在 vb.net 上实现结果?我在 C# 中看到了许多表单,但我无法转换。
【问题讨论】:
-
在 C# 或 VB.Net 中发送
EM_GETPARAFORMAT/EM_SETPARAFORMAT是一样的。你被困在哪里了?在 P/Invoke 声明上? + 请只发布与问题相关的代码。顺便说一句(不相关),当您有来自数据库的数据源时,这并不是将 Rows 添加到 DataGridView 的真正方法。同样的:rchrelatorio.Text += dgv1.Rows(r).Cells(0).Value & " " -
@Jimi,我是编程初学者,知道有细节需要调整。 dgv 是一个测试触发器,只是为了将来的想法,它将被删除,并且这些行将直接在 Richtextbox 中播放。好吧,我的疑惑是怎么做整个EM_GETPARAFORMAT/EM_SETPARAFORMAT过程。我真的不知道从哪里开始,你能亮一下吗?
-
当然,我可以帮助您,但您需要展示您自己尝试解决问题的方法。您可以在 VB.Net 中找到执行相同任务的代码,而不仅仅是 C#(这两种语言几乎相同)。当你有一些代码(仅与这件事有关)时,试一试并回发。
-
@Jimi,我发布了答案,能够解决它,但现在我遇到了另一个问题,当尝试打印或导出到 Richtextbox 到 pdf 时,它不符合已完成的格式, 返回第一张图片的默认值。
标签: vb.net visual-studio-2017 richtextbox