Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 Visual Studio自动完成模拟在选择时按下enter键_Vb.net_Visual Studio 2008_Autocomplete - Fatal编程技术网

Vb.net Visual Studio自动完成模拟在选择时按下enter键

Vb.net Visual Studio自动完成模拟在选择时按下enter键,vb.net,visual-studio-2008,autocomplete,Vb.net,Visual Studio 2008,Autocomplete,VisualStudio很好地为文本框和组合框提供了内置的自动完成功能。我使用的是自动完成的建议方法,它为用户提供了一个选项列表,并根据他们的类型进行筛选。我遇到的问题是,当用户进行选择(通过鼠标)时,VS会将所选文本放入文本框,并模拟在文本框上按下enter键 在我的程序中,enter keyup事件用于将文本框中输入的文本发送到a COM端口。为了使其按预期工作,用户必须能够选择自动完成选项,然后添加到该选项中,以便可以更改设置 是否有可能阻止它触发该事件或拦截它?我不确定是否可能或如何确定

VisualStudio很好地为文本框和组合框提供了内置的自动完成功能。我使用的是自动完成的建议方法,它为用户提供了一个选项列表,并根据他们的类型进行筛选。我遇到的问题是,当用户进行选择(通过鼠标)时,VS会将所选文本放入文本框,并模拟在文本框上按下enter键

在我的程序中,enter keyup事件用于将文本框中输入的文本发送到a COM端口。为了使其按预期工作,用户必须能够选择自动完成选项,然后添加到该选项中,以便可以更改设置

是否有可能阻止它触发该事件或拦截它?我不确定是否可能或如何确定按键的来源

以下是KeyUp事件和KeyPress事件的代码:

    Private Sub txtInput_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtInput.KeyPress
    If e.KeyChar = Chr(13) Then
        e.Handled = True
    End If
End Sub

Private Sub txtInput_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtInput.KeyUp

    If e.KeyValue = Keys.Enter Then

        If txtInput.Text.ToLower = "cls" Or txtInput.Text.ToLower = "clr" Or txtInput.Text.ToLower = "clear" Then
            txtOutput.Text = ""
        Else
            If SerialPort1.IsOpen Then
                SerialPort1.Write(txtInput.Text)
            Else
                MsgBox("The serial port is not open")
            End If
        End If

        txtInput.Text = ""

        e.Handled = True
        e.SuppressKeyPress = True

    End If
End Sub
自动完成功能是通过控件的属性实现的,唯一的代码是生成自动完成列表

提前感谢您的帮助


另外,我正在使用VB.net,但如果必要的话,我可以找到如何将它从另一种.net语言转换到VB的方法。在研究它之后,我无法找到一种标准方法来完成您想要做的事情,而不覆盖内置自动完成的功能

您必须为文本框创建自己的自动完成类,但不要像在下面的示例代码中为传统的自动完成列表那样实现MouseEventHandler:

private void List_MouseDown(object sender, MouseEventArgs e)
{

    for (int i=0; i<this.list.Items.Count; i++)
    {
    if (this.list.GetItemRectangle(i).Contains(e.X, e.Y))
    {
        this.list.SelectedIndex = i;
        this.SelectCurrentItem();
    }
    }
    this.HideList();
}
private void List\u MouseDown(对象发送方,MouseEventArgs e)
{

对于(int i=0;i在研究它之后,我无法找到一种标准方法来完成您想要做的事情,而不覆盖内置自动完成的功能

您必须为文本框创建自己的自动完成类,但不要像在下面的示例代码中为传统的自动完成列表那样实现MouseEventHandler:

private void List_MouseDown(object sender, MouseEventArgs e)
{

    for (int i=0; i<this.list.Items.Count; i++)
    {
    if (this.list.GetItemRectangle(i).Contains(e.X, e.Y))
    {
        this.list.SelectedIndex = i;
        this.SelectCurrentItem();
    }
    }
    this.HideList();
}
private void List\u MouseDown(对象发送方,MouseEventArgs e)
{

对于(int i=0;问题是我根本不希望它发送到COM端口。在文本框内按enter键时,它会发送到COM端口。它不仅仅是在字符串上附加一个CR LF,它模拟的是按enter键。我已经发布了一些代码并编辑了我的问题,我希望这会给你更多的信息。我让您的代码运行-那么,您是希望在通过键盘点击时发送enter,还是只希望在使用鼠标时发送它?我只希望在用户实际点击enter键时发送enter。感谢您的帮助。我同意,如果不滚动我自己的,很可能无法完成此操作。因此,这就是我将要做的,这篇CodeProject文章看起来是这样的真的很好,所以我将对此进行研究。再次感谢。问题是我根本不希望它发送到COM端口。当文本框内按enter键时,它会发送到COM端口。它不是简单地将CR LF附加到字符串,而是模拟按下enter键。我发布了一些代码并编辑了我的问题在上,我希望这会给你更多的信息。我正在运行你的代码-那么你是想在通过键盘点击时发送enter,还是只想在使用鼠标时发送?我只想在用户实际点击enter键时发送enter。感谢你的帮助。我同意,如果不滚动我自己的代码,很可能无法完成此操作。因此,这就是我将要做的是,那篇CodeProject文章看起来非常好,所以我将对此进行研究。再次感谢。