Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 单击以输入文本时保存文本框名称_Vb.net_Textbox_Controls - Fatal编程技术网

Vb.net 单击以输入文本时保存文本框名称

Vb.net 单击以输入文本时保存文本框名称,vb.net,textbox,controls,Vb.net,Textbox,Controls,嘿,我需要一些帮助,让我的代码像我需要的那样正常工作。下面是我的代码,当用户点击文本框时,它会弹出一个键盘,在那里他们可以点击任何字母,它会将该字母输入文本框。问题是,我似乎无法返回文本框的名称,以便它知道将信件发送到何处 射击顺序为: 文本框1\u鼠标向下移动 keyboardOrPad.runKeyboardOrPad kbOrPad.keyboardPadType 点击信件 Form1.PutinotTextBox 表格1 Private Sub TextBox1_MouseDown(By

嘿,我需要一些帮助,让我的代码像我需要的那样正常工作。下面是我的代码,当用户点击文本框时,它会弹出一个键盘,在那里他们可以点击任何字母,它会将该字母输入文本框。问题是,我似乎无法返回文本框的名称,以便它知道将信件发送到何处

射击顺序为:

文本框1\u鼠标向下移动

keyboardOrPad.runKeyboardOrPad

kbOrPad.keyboardPadType

点击信件

Form1.PutinotTextBox

表格1

Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Call keyboardOrPad.runKeyboardOrPad("SHOW") 'Just shows the keyboard
    Call kbOrPad.keyboardPadType("PAD", TextBox1)
End Sub

Public Sub putIntoTextBox(ByRef what2Put As String, ByRef whatBox As TextBox)
    whatBox.Text = what2Put '<-- has error Object reference not set to an instance of an object. for the whatBox.text
End Sub
Private Sub TextBox1\u MouseDown(ByVal sender作为对象,ByVal e作为System.Windows.Forms.MouseEventArgs)处理TextBox1.MouseDown
调用keyboardOrPad.runKeyboardOrPad(“SHOW”)'只显示键盘
调用kbOrPad.keyboardPadType(“PAD”,TextBox1)
端接头
公共子输入文本框(ByRef what2Put作为字符串,ByRef whatBox作为文本框)

whatBox.Text=what2Put'确保
theBoxName
是一个,然后我会这样填充它,让您可以灵活地实现共享
TextBox
MouseDown
处理程序:

Private Sub TextBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Dim tb As TextBox = CType(sender, TextBox)

    Call keyboardPadType("PAD", tb)
End Sub

试试这样的

Public Class Form1
Dim myKborPad As New kbOrPad

Private Sub TextBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Dim tb As TextBox = CType(sender, TextBox)

    Call myKborPad.keyboardPadType("PAD", tb)
End Sub
Public Sub putIntoTextBox(ByRef what2Put As String, ByRef whatBox As TextBox)
    whatBox.Text = what2Put
End Sub
Call putIntoTextBox(btn.Text, theBoxName)

根据您的PasteBin代码进行编辑

我注意到您已经在模块中声明了keyboardPadType的一个实例,请使用它而不是我前面所说的。该代码应该如下所示:

删除: 暗myKborPad作为新的kbOrPad

并使用您在模块中创建的theKbOrPad,如下所示:

Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Dim tb As TextBox = CType(sender, TextBox)

    Call keyboardOrPad.runKeyboardOrPad("SHOW")
    Call theKbOrPad.keyboardPadType("PAD", tb)
    'Call kbOrPad.keyboardPadType("PAD", tb)
End Sub
另外,关于当前的错误,您正在尝试使用,它不是您正在运行的实际表单,您可以通过将您尝试使用的方法作为共享来编码。像这样:

Public Shared Sub putIntoTextBox(ByRef what2Put As String, ByRef whatBox As TextBox)
    whatBox.Text = what2Put
End Sub
但是,实际上我更愿意像这样把它放进你们的模块中

Public Class Form1
Dim myKborPad As New kbOrPad

Private Sub TextBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Dim tb As TextBox = CType(sender, TextBox)

    Call myKborPad.keyboardPadType("PAD", tb)
End Sub
Public Sub putIntoTextBox(ByRef what2Put As String, ByRef whatBox As TextBox)
    whatBox.Text = what2Put
End Sub
Call putIntoTextBox(btn.Text, theBoxName)
这样称呼它

Public Class Form1
Dim myKborPad As New kbOrPad

Private Sub TextBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
    Dim tb As TextBox = CType(sender, TextBox)

    Call myKborPad.keyboardPadType("PAD", tb)
End Sub
Public Sub putIntoTextBox(ByRef what2Put As String, ByRef whatBox As TextBox)
    whatBox.Text = what2Put
End Sub
Call putIntoTextBox(btn.Text, theBoxName)

在进行上述更改后,您的代码可以正常工作。

首先,您应该将ByRef替换为ByVal(如果您不知道是否应该使用其中一个,请使用ByVal)

其次,我相信你不需要这个方法,putinotextbox,我认为你应该能够直接做到这一点(可能是线程问题阻止了它,但我不认为这可能是基于你的描述)。您没有显示
Form1
的设置位置(或者即使设置了),这是另一个潜在问题

最后,调用另一个类的更好方法是使用delegate/lambada


(我知道,没有代码,但您没有为工作响应提供足够的上下文,所以我只提供文本)。

Hey@Mark Hall!添加tb后,结果是相同的结果。我不知道如何实现模块范围的varibale…你所有的代码是在同一个类中还是在使用不同的类?我使用的表单上有文本框。一个键盘形式,在键盘上有键盘布局按钮,在2中间的一个类之间进行通信。如果将BoxNeX.Text =“test”添加到KiBooDpAdType函数中,那么它将“test”放入文本框中。然而,一旦我在ClickLetters函数中使用了相同的代码,它就给了我你在上图中看到的错误。??@StealthRT我能够让它工作,看看我的最新版本edit@StealthRT:如果你要放这么多东西,剩下的部分就放设计器文件的内容——试着把它变成一个可构建的项目,但是有太多的控件需要重新创建。你可能还想把它删减到你需要显示你的问题的地方。