扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、添加TextBox控件
创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为馆陶企业提供专业的网站设计制作、网站设计,馆陶网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
2、设置TextBox属性
3、编写代码
4、运行效果
非常简单
一:如果知道要选中的行号
datagridview1.Rows(行号).Selected
=
True
datagridview1.FirstDisplayedScrollingRowIndex
=
行号
第一行是选中行号所在的行,第二行是移动滚动条将选中的行在显示区域的最上放显示出来。
二:根据内容选中行并显示
For
i
=
To
datagridview1.Rows.Count
-
1
If
datagridview1.Rows(i).Cells("列的名称").Value
=
要选中行列的值
Then
datagridview1.Rows(i).Selected
=
True
datagridview1.FirstDisplayedScrollingRowIndex
=
i
End
If
Next
而且,如果你不想选中的行显示到最上面,可以这样:
For
i
=
To
datagridview1.Rows.Count
-
1
If
datagridview1.Rows(i).Cells("列的名称").Value
=
要选中行列的值
Then
datagridview1.Rows(i).Selected
=
True
Dim
indeI
As
Integer
=
i
-
15
If
indeI
1
Then
indeI
=
1
datagridview1.FirstDisplayedScrollingRowIndex
=
indeI
End
If
Next
上面的代码是根据某列的值选中行,并且移动滚动条将选中的行在显示区域的第15行显示。
你数字输出方法不对
你要把
xxx.WriteLine()
换成
xxx.Write()
WriteLine()方法会在每次输出后自动添加换行符,所以看起来就是一列
将二位数组转成DataTable,网上找的不知道成不成
public static DataTable ConvertToDataTable(string[,] arr)
{
DataTable dataSouce = new DataTable();
for (int i = 0; i arr.GetLength(1); i++)
{
DataColumn newColumn = new DataColumn(i.ToString(), arr[0, 0].GetType());
dataSouce.Columns.Add(newColumn);
}
for (int i = 0; i arr.GetLength(0); i++)
{
DataRow newRow = dataSouce.NewRow();
for (int j = 0; j arr.GetLength(1); j++)
{
newRow[j.ToString()] = arr[i, j];
}
dataSouce.Rows.Add(newRow);
}
return dataSouce;
}
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:随便写的,自己看着调
txt.Text = reader.GetValue(0).ToString()
Me.Controls.Add(txt) 'Me 可以改为你要添加上去的对象
End While
'未经过运行,自己调试看看能否OK
求行:
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
通过对最后一个字符的位置(总长度)的行来判断呗,不过也得加一。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流