你數(shù)字輸出方法不對(duì)
成都創(chuàng)新互聯(lián)公司專注于泗陽(yáng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供泗陽(yáng)營(yíng)銷型網(wǎng)站建設(shè),泗陽(yáng)網(wǎng)站制作、泗陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)、泗陽(yáng)網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造泗陽(yáng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供泗陽(yáng)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
你要把
xxx.WriteLine()
換成
xxx.Write()
WriteLine()方法會(huì)在每次輸出后自動(dòng)添加換行符,所以看起來(lái)就是一列
求行:
RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)+1
這個(gè)代碼呢,我的理解呢,是獲取在selstart的地方的行數(shù)。一般來(lái)講selstart的地方都是光標(biāo)的地方,然后會(huì)給你返回line。不過(guò)返回的時(shí)候要自己加1。不是很懂這個(gè)語(yǔ)法,有懂得可以教我一下
以上是求行數(shù)。
求列:
For i = 0 To RichTextBox1.SelStart
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart - i) 0 Then Exit For
j = j + 1
Next i
這個(gè)for循環(huán)呢,講的是檢查這一行光標(biāo)前有多少個(gè)列,然后用J輸出列的個(gè)數(shù)。
因?yàn)閂B6.0沒有RichTextBox1.GetFirstCharIndexOfCurrentLine這種語(yǔ)法。所以就得自己模擬這個(gè)過(guò)程。
具體怎么檢查的呢,首先將 i 從0循環(huán)到光標(biāo)處,
如果 【光標(biāo)字符數(shù)】處的行數(shù) 減去 【光標(biāo)字符數(shù)減去 i 個(gè)字符數(shù)】處的行數(shù)小于0了,我寫了個(gè)不為零。但此時(shí)寫小于零就可以。那么代表著換行了,同時(shí)也代表著光標(biāo)到上一行之間有多少字。用j存儲(chǔ)循環(huán)次數(shù),得出對(duì)應(yīng)列數(shù)。(我們中文習(xí)慣是叫第一列,但程序?qū)嶋H上是第零列,但在循環(huán)的時(shí)候就注意到并解決這個(gè)問(wèn)題了)
如果你替換寫法,例如
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart + i) 0 Then Exit For
j = j + 1
Next i
這個(gè) J 就對(duì)應(yīng)著光標(biāo)到該行結(jié)尾有幾個(gè)字符了,如果有需要可以使用,但一般不需要。
那么就像上面說(shuō)的那樣,行列都求出來(lái)了,最后用事件和TEXT或者caption表現(xiàn)出來(lái)就好了
至于說(shuō)總行數(shù)
RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text)) + 1
通過(guò)對(duì)最后一個(gè)字符的位置(總長(zhǎng)度)的行來(lái)判斷唄,不過(guò)也得加一。
Dim mycon As New SqlConnection(connstrs)
Dim sqlStr As String = "SELECT * FROM [Column] FROM [Table]"
Dim cmd As New SqlCommand(sqlStr, mycon)
Dim reader = cmd.ExecuteReader()
Dim i As Integer = 1
While reader.Read()
Dim txt As New TextBox()
txt.Name = "txt" + i
txt.Size = New Size(100, 20) '文本框大小
txt.Location = New Point(50, i * 20 + 20)'left:50 top:隨便寫的,自己看著調(diào)
txt.Text = reader.GetValue(0).ToString()
Me.Controls.Add(txt) 'Me 可以改為你要添加上去的對(duì)象
End While
'未經(jīng)過(guò)運(yùn)行,自己調(diào)試看看能否OK
可先計(jì)算出文本框TextBox1中的總行數(shù),然后在行號(hào)框TextBox2中填上從1到總行數(shù)的行號(hào)。
再用API函數(shù)GetScrollPos分別獲得文本框和行號(hào)框當(dāng)前行號(hào),最后再使用API函數(shù)SendMessage使行號(hào)框的行號(hào)滾動(dòng)到對(duì)應(yīng)的行數(shù)。
因?yàn)槲谋究虻臐L動(dòng)條沒有滾動(dòng)事件,可以暫時(shí)使用一個(gè)Timer定時(shí)刷新,雖然方法笨了點(diǎn),但暫時(shí)只能這么用了
代碼如下:
Private Declare Function GetScrollPos Lib "user32" (ByVal handle As IntPtr, ByVal nbar As Integer) As Integer
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a as integer
a = GetScrollPos(TextBox1.Handle, 1)
Dim b as integer
b = GetScrollPos(TextBox2.Handle, 1)
SendMessage(TextBox2.Handle, HB6, 0, a-b)
End Sub
你可以這樣,如果你用 dataGridview 時(shí)不是也要查詢表嘛,
我們用datatable/dataset 保存你查詢的結(jié)果,
然后就可以一條條顯示,記錄住當(dāng)前顯示的row(行)
eg:你的查詢保存 datatable1
第一條時(shí),
我們就來(lái)個(gè) dim dtrow as datarow=datatable.rows(0)
textbox1.text=dtrow.item("字段名")'
...
都是如此
當(dāng)然也是可能綁定的
CurrencyManager 用于管理顯示的行數(shù)
textbox.DataBindings.add("屬性",data,"字段")
1、添加TextBox控件
2、設(shè)置TextBox屬性
3、編寫代碼
4、運(yùn)行效果