使用VB.NET的五个技巧之处理数据行 处理数据行(DataRow)
Windows窗体中的数据绑定列表框和组合框很节省时间 典型的代码如下(假定已经建立了SqlDataAdapter或者其它部件获取数据)
Dim ds As New DataSet() SqlDataAdapter Fill(ds Customers ) ListBox DataSource = ds Tables( Customers ) ListBox DisplayMember = CompanyName ListBox ValueMember = CustomerID
在这种情况下 代码使用Northwind数据库的顾客记录工作 DisplayMember属性设置为你希望用户在列表框中看到的记录字段 它是customers表的CompanyName 通常ValueMember属性设置为数据表中的一个键字段 对于customer来说是CustomerID 一旦用户选择了列表框中的一行 很容易使用列表框的SelectedValue属性获得键字段
MsgBox(ListBox SelectedValue)
但是有可能需要一个与被选择项相关的整个数据行对象的引用 例如 如果被选择的行需要被删除 就不知道键了 你需要一个数据行的引用以使用Delete方法
典型的Visual Basic开发者通常这样想 我已经得到了该行的键了 我将编写一些逻辑来查找使用该键的行 这样可以实现 但是有更好的实现方法 可以使用一行代码获取与列表框中选项关联的数据行
Dim dr As DataRow = CType(ListBox SelectedItem DataRowView) Row
通常该逻辑不会凭直觉出现 即使对经验丰富的开发者 为了解释这是怎样实现的 我把上面的一行拆成几行 下面的代码与上面代码的功能相同
Dim drv As DataRowView drv = CType(ListBox SelectedItem DataRowView) Dim dr As DataRow dr = drv Row
DataRowView类是数据行的包装 它被多个Windows窗体控件使用 它使得显示与控件中的数据行相关的数据更加容易 当列表框被数据绑定到数据表时(假定列表框中的有些行当前被选定了) 列表框的SelectedItem属性保存了一个DataRowView对象
这意味着我们能把列表框的SelectedItem属性转换到DataRowView对象 这就是上面代码中的第二行实现的 接着DataRowView暴露一个Row属性 它指向被包装的数据行 上面的代码声明了一个数据行并设置了Row属性
转换对象的类型以访问它的接口的技术在Visual Basic 中不是经常使用 但是在Visual Basic NET中这是经常的 有了上面的例子后 大多数有经验的开发者迅速跟上了这种技术
数据行的引用(dr)可用于用任何方式维护行 访问数据行中的任何特定字段是可行的 行中的数据可以被改变 能使数据行的Delete方法把该行标识为删除 或者从数据表的行集合中删除该行 下面的代码标识删除了一行
dr Delete()
lishixinzhi/Article/program/net/201311/12974
vb.net怎么打印执行代码行数如何在VB.net中的应用程序运行打印行数
[英] how to print out line number during application run in VB.net
查看:341 发布时间:2015/11/25 16:05:39 .net vb.net debugging stack-trace line-numbers
万维广告联盟
?? 杜绝删库跑路 。一个平台登录所有资产 , 实现事先防范、事中控制、事后溯源,满足等保合规要求 。
广告
本文介绍了如何在VB.net中的应用程序运行打印行数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想打印出我的调试消息,在VB.net应用程序的行号 。我不喜欢这样,
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.net中的应用程序运行打印行数的文章就介绍到这了 , 希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
怎样在VB.NET中设置多行文本框中显示的行数1、添加TextBox控件
2、设置TextBox属性
3、编写代码
4、运行效果
VB.net怎么显示RichTextBox的行数、列数和总行数?。?/h2>求行:
RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) 1
这个代码呢,我的理解呢,是获取在selstart的地方的行数 。一般来讲selstart的地方都是光标的地方,然后会给你返回line 。不过返回的时候要自己加1 。不是很懂这个语法,有懂得可以教我一下
【vb.net显示行数据的简单介绍】以上是求行数 。
求列:
For i = 0 To RichTextBox1.SelStart
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart - i)0 Then Exit For
j = j1
Next i
这个for循环呢,讲的是检查这一行光标前有多少个列 , 然后用J输出列的个数 。
因为VB6.0没有RichTextBox1.GetFirstCharIndexOfCurrentLine这种语法 。所以就得自己模拟这个过程 。
具体怎么检查的呢,首先将 i 从0循环到光标处,
如果 【光标字符数】处的行数 减去 【光标字符数减去 i 个字符数】处的行数小于0了,我写了个不为零 。但此时写小于零就可以 。那么代表着换行了,同时也代表着光标到上一行之间有多少字 。用j存储循环次数,得出对应列数 。(我们中文习惯是叫第一列,但程序实际上是第零列,但在循环的时候就注意到并解决这个问题了)
如果你替换写法,例如
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStarti)0 Then Exit For
j = j1
Next i
这个 J 就对应着光标到该行结尾有几个字符了,如果有需要可以使用 , 但一般不需要 。
那么就像上面说的那样,行列都求出来了 , 最后用事件和TEXT或者caption表现出来就好了
至于说总行数
RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text))1
通过对最后一个字符的位置(总长度)的行来判断呗,不过也得加一 。
VB.NET多个文本框显示多行数据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 * 2020)'left:50 top:随便写的,自己看着调
txt.Text = reader.GetValue(0).ToString()
Me.Controls.Add(txt) 'Me 可以改为你要添加上去的对象
End While
'未经过运行,自己调试看看能否OK
关于vb.net显示行数据和的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 路由器应该怎么跟猫连接,路由器应该怎么跟猫连接的
- 手机直播电脑上如何看直播,手机直播电脑怎么看
- mysql怎么导入工作表 mysql表导入数据
- java核心代码是哪部分,java的核心
- 关于制作一个棋牌游戏多少钱的信息
- 中国区块链最好的大学,中国区块链大学有哪些
- php连接数据库返回值 php连接数据库返回值出现乱码
- python判断是不是保留字,python 存在判断
- 大众文化公众号文章,大众文化app