VB2015 textbox数据写入问题

skzjq 2017-05-26 05:28:58
我有一组数组数据想循环写入已经画好的连续textbox中.代码要怎么写:
Private Sub ComboBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox1.KeyPress
Dim PLC_Data As String
Dim PLC_DataBin As Long
Dim idata(0) As Integer
Dim MyNumber As String
If e.KeyChar = Chr(13) Then '回车事件
MyNumber = ComboBox1.Items.Contains(ComboBox1.Text) '确认在ComboBox1.Items全集中有没有输入过的参数'
If MyNumber = False Then '如没有就添加'
ComboBox1.Items.Add(ComboBox1.Text)
End If
AxActQCPUQ1.ReadDeviceBlock(ComboBox1.Text, 1, idata(0)) '批量读取PLC软元件'
PLC_Data = idata(0)
Do While (PLC_Data > 0) '把读取的数值转换成二进制'
PLC_DataBin = PLC_Data Mod 2 & PLC_DataBin
PLC_Data = PLC_Data \ 2
Loop
End If
End Sub

我想把 PLC_DataBin内的二进制 从右边往左边放入已经画好的TEXTBOX1~TEXTBOX16中.
这个要怎么写.谢谢了.
PS:超新手初学VB,请大家多多指导.谢谢.
...全文
218 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
im战术 2017-05-27
  • 打赏
  • 举报
回复


Public Class Form1
Private Sub Number1_TextChanged(sender As Object, e As EventArgs) Handles Number1.TextChanged
If IsNumeric(Number1.Text) Then
Dim BitsArr As Char() = GetBits(Number1.Text)
BitsStr1.Text = BitsArr
For i = 1 To 16
CType(Controls.Find("TextBox" & i, False)(0), TextBox).Text = BitsArr(i - 1)
Next
Else
MsgBox("你输入的不是数字")
End If
End Sub

Function GetBits(data As Integer) As Char()
If data >= 0 And data <= &HFFFF Then
Return Convert.ToString(data, 2).PadLeft(16, "0")
Else
Return "".PadLeft(16, "0")
End If
End Function
End Class

你的错误是上下标索引超出了,你可以在错误时中断程序.把鼠标放在 i 变量上看看 i 是多少.
比如i是7 然后看下TextBox7是不是存在或PLC_DataBin(6)是否有值.
如果TextBox1~16在别的容器上那么这里得加上那个容器名
CType(容器名.Controls.Find("TextBox" & i, False)(0), TextBox).Text = BitsArr(i - 1)
skzjq 2017-05-27
  • 打赏
  • 举报
回复
idaaa,你好,我已经把程序改好,在调试是出现错误,请问要怎么修改.谢谢.
AxActQCPUQ1.ReadDeviceBlock(ComboBox1.Text, 1, idata(0)) '批量读取PLC软元件'

Dim data As Integer = &HFFFFF
Dim PLC_DataBin() As Char = PLC_Data(data)
TextBox82.Text = PLC_DataBin '这里监视的二进制数是正常的'
For i = 1 To 16
CType(Controls.Find("TextBox" & i, False)(0), TextBox).Text = PLC_DataBin(i - 1)
Next
End If
End Sub
Function PLC_Data(data As Integer) As Char()
data = idata(0)
If data >= 0 And data <= &HFFFF Then
Return Convert.ToString(data, 2).PadLeft(16, "0")
Else
Return "".PadLeft(16, "0")
End If
End Function

skzjq 2017-05-27
  • 打赏
  • 举报
回复
引用 2 楼 idaaa 的回复:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim data As Integer = &HFFFFF
        Dim BitsArr As Char() = GetBits(data)
        For i = 1 To 16
            CType(Controls.Find("TextBox" & i, False)(0), TextBox).Text = BitsArr(i - 1)
        Next
    End Sub

    Function GetBits(data As Integer) As Char()
        If data >= 0 And data <= &HFFFF Then
            Return Convert.ToString(data, 2).PadLeft(16, "0")
        Else
            Return "".PadLeft(16, "0")
        End If
    End Function
看看是不是你想要的效果
非常谢谢idaaa的回答.我是新学的,你能不能给我注解一下.谢谢了..再次感谢.
skzjq 2017-05-27
  • 打赏
  • 举报
回复
非常谢谢idaaa.已经好了,少了容器名.加上后OK.谢谢了. 再次感谢你的帮助.
im战术 2017-05-26
  • 打赏
  • 举报
回复

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim data As Integer = &HFFFFF
        Dim BitsArr As Char() = GetBits(data)
        For i = 1 To 16
            CType(Controls.Find("TextBox" & i, False)(0), TextBox).Text = BitsArr(i - 1)
        Next
    End Sub

    Function GetBits(data As Integer) As Char()
        If data >= 0 And data <= &HFFFF Then
            Return Convert.ToString(data, 2).PadLeft(16, "0")
        Else
            Return "".PadLeft(16, "0")
        End If
    End Function
看看是不是你想要的效果
im战术 2017-05-26
  • 打赏
  • 举报
回复
你的0到F要显示成0或1吗? 还有得二进制可以这样得来

        '                                        255是参数,2是二进制的意思.
        Dim 二进制字符串 As String = Convert.ToString(255, 2)
        '获得结果是11111111这样的8个1的字符串
如果是的话,下面我会给你代码.

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧