richtextbox - 按钮 - 光标问题 - 不知道如何标题

时间:2014-03-17 14:09:58

标签: winforms button cursor richtextbox

我的程序存在很大问题!

http://www.directupload.net/file/d/3564/9lsazq3e_png.htm

如果我点击richTextBox,我想用按钮上的数字填充它。

我现在怎么做---> (每个Button都有此点击事件)

private void digits_Click_2(object sender, EventArgs e)
    {
        if (sender is Control)
        {
            rtxtLast.Text += (sender as Control).Text;
            rtxtLast.SelectionStart = rtxtLast.Text.Length;
            rtxtLast.Focus();
        }
    }

我可以用数字填充richTextBox,但只能在文本末尾填充。

但我想在光标处插入文字

对于光标,我有左/右箭头(或通过触摸显示屏)

顺便说一句,我有一个完整的触控系统,所以我必须使用按钮(我没有键盘/鼠标)

它也与空格键(“Leertaste”)

的问题相同
        private void button36_Click(object sender, EventArgs e)
    {
        rtxtLast.Text += " ";
        rtxtLast.SelectionStart = rtxtLast.Text.Length;
        rtxtLast.Focus();
    } 

这是我删除的方式(“Löschen”)

        private void button11_Click(object sender, EventArgs e)
    {
        if (rtxtLast.SelectionStart > 0)
        {
            int index = rtxtLast.SelectionStart;
            rtxtLast.Text = rtxtLast.Text.Remove(rtxtLast.SelectionStart - 1, 1);
            rtxtLast.Select(index - 1, 1);
            rtxtLast.Focus();
        }
        else if (rtxtLast.Text != string.Empty)
        {
            rtxtLast.Text = rtxtLast.Text.Remove(rtxtLast.Text.Length - 1);
        }
    }

这是左右的

    private void left2_Click(object sender, EventArgs e)
    {
        if (rtxtLast.SelectionStart > 0)
        {
            int index = rtxtLast.SelectionStart;
            rtxtLast.Select(index - 1, 1);
            rtxtLast.Focus();
        }
    }


    private void right2_Click(object sender, EventArgs e)
    {
        if (rtxtLast.SelectionStart > -1)
        {
            int index = rtxtLast.SelectionStart;
            rtxtLast.Select(index + 1, 1);
            rtxtLast.Focus();
        }
    }

左/右,删除正在运行 但我还没有找到数字的解决方案..

我知道代码是错误的,但我不知道如何做正确的

有没有人可以帮助我?

格尔茨 阿图尔

1 个答案:

答案 0 :(得分:0)

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);

每次想要发送带有按钮的角色时,请单击

private void Button0_Click(object sender, EventArgs e)
    {
        richTextBox1.Focus();

        SendMessage(richTextBox1.Handle, 0x100, 0x30, 0);
        SendMessage(richTextBox1.Handle, 0x102, 0x30, 0);
    }

0x30 0虚拟密钥。 0x100,0x102 WM_KEYDOWNWM_CHAR条消息。 您可以使用此方法发送所有键盘键。另一个例子是backspace key

private void buttonBackSpace_Click(object sender, EventArgs e)
    {
        richTextBox1.Focus();

        SendMessage(richTextBox1.Handle, 0x100, 0x8, 0); //0x8 is the backspace virtual key
        SendMessage(richTextBox1.Handle, 0x102, 0x8, 0);
    }

有关虚拟键代码see here

的列表

瓦尔特