首页后端开发ASP.NETvb点虐行号 vba代码行数

vb点虐行号 vba代码行数

时间2023-04-15 12:27:01发布访客分类ASP.NET浏览420
导读:VB.NET中,如何获得文本框中可见区域的首行的行号? 可先计算出文本框TextBox1中的总行数,然后在行号框TextBox2中填上从1到总行数的行号。再用API函数GetScrollPos分别获得文本框和行号框当前行号,最后再使用API...

VB.NET中,如何获得文本框中可见区域的首行的行号?

可先计算出文本框TextBox1中的总行数,然后在行号框TextBox2中填上从1到总行数的行号。

再用API函数GetScrollPos分别获得文本框和行号框当前行号,最后再使用API函数SendMessage使行号框的行号滚动到对应的行数。

因为文本框的滚动条没有滚动事件,可以暂时使用一个Timer定时刷新,虽然方法笨了点,但暂时只能这么用了

代码如下:

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

vb点虐怎么打印执行代码行数

如何在VB点虐中的应用程序运行打印行数

[英] how to print out line number during application run in VB点虐

查看:341 发布时间:2015/11/25 16:05:39 点虐 vb点虐 debugging stack-trace line-numbers

万维广告联盟

🔐 杜绝删库跑路。一个平台登录所有资产,实现事先防范、事中控制、事后溯源,满足等保合规要求。

广告

本文介绍了如何在VB点虐中的应用程序运行打印行数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想打印出我的调试消息,在VB点虐应用程序的行号。 我不喜欢这样,

Dim st As StackTrace

Dim sf As StackFramee

st = New StackTrace(New StackFrame(True))

sf = st.GetFrame(0)

Console.WriteLine.("Line " sf.GetFileLineNumber())

我想把片段的一类,每次我打电话logMsg方法来记录我的消息,行号源$ C $ C。 但我发现,如果我把上面的代码段为一类,行数总是相同的,这是我新的'圣'。行

的功能是完全一样的具有_ 行的宏C ++。其实我是C ++程序员。

反正来解决这个问题?谢谢。

推荐答案

您已经证明是工作完全按预期的code。它打印在您拍摄的堆栈帧行的数目。因为你已经在不同的类中定义它,它打印包含类文件的行号。

在的getFrame 方法,在这里是非常重要的。栈帧起始编号是0,这是的最后的堆栈帧推。因此,参考帧0,则指示打印的最后的堆栈被推帧的行数的运行时间。当一个方法调用另一个,一个新的堆栈帧创建。

相反,你需要改变你的方法在几个重要方面。首先,你需要获得的第一个的框架被压入堆栈。第二,你可能要接受有关您回应异常含参数的信息。尝试重写你的调试方法看起来是这样的:

Public Sub PrintCurrentLine(ByVal ex As Exception)

Dim st As StackTrace = New StackTrace(ex)

Dim sf As StackFrame = st.GetFrame(st.FrameCount - 1)

Console.WriteLine("Line " sf.GetFileLineNumber())

End Sub

还要记住,如果你正在运行的code与优化启用,像行号可能已经改变。你总是需要包括PDB文件与您的code,它包含调试用于在这样的情况的信息。它映射优化code回到原来的来源。

这篇关于如何在VB点虐中的应用程序运行打印行数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

VB点虐怎么显示RichTextBox的行数、列数和总行数啊?

求行:

RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)+1

这个代码呢,我的理解呢,是获取在selstart的地方的行数。一般来讲selstart的地方都是光标的地方,然后会给你返回line。不过返回的时候要自己加1。不是很懂这个语法,有懂得可以教我一下

以上是求行数。

求列:

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

这个for循环呢,讲的是检查这一行光标前有多少个列,然后用J输出列的个数。

因为VB6.0没有RichTextBox1.GetFirstCharIndexOfCurrentLine这种语法。所以就得自己模拟这个过程。

具体怎么检查的呢,首先将 i 从0循环到光标处,

如果 【光标字符数】处的行数 减去 【光标字符数减去 i 个字符数】处的行数小于0了,我写了个不为零。但此时写小于零就可以。那么代表着换行了,同时也代表着光标到上一行之间有多少字。用j存储循环次数,得出对应列数。(我们中文习惯是叫第一列,但程序实际上是第零列,但在循环的时候就注意到并解决这个问题了)

如果你替换写法,例如

If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart + i) 0 Then Exit For

j = j + 1

Next i

这个 J 就对应着光标到该行结尾有几个字符了,如果有需要可以使用,但一般不需要。

那么就像上面说的那样,行列都求出来了,最后用事件和TEXT或者caption表现出来就好了

至于说总行数

RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text)) + 1

通过对最后一个字符的位置(总长度)的行来判断呗,不过也得加一。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: vb点虐行号 vba代码行数
本文地址: https://pptw.com/jishu/3171.html
搭建阿里云服务器需要多久 阿里云服务器架设 腾讯云服务器各类区别 腾讯云服务器的用途

游客 回复需填写必要信息