在C#Windows中的文本框中更改光标位置

时间:2011-11-21 02:44:50

标签: c# winforms cursor

我有一个winform加载MDI子winform。子winform中的所有文本框总是让光标停留在左侧,我不能将它移动到另一个位置,除了我选择所有文本并重新输入。如何启用此功能以使光标可以使用鼠标停留在任何位置?

3 个答案:

答案 0 :(得分:7)

在以下示例中,光标将位于表单的每个文本框中的第二个字符之后。焦点将放在最后一个,但通过反复按TAB键,您可以验证是否已为每个文本框设置了光标位置。

using System;
using System.Windows.Forms;

public class Program
{
  public static void Main()
  {
    var form = new Form();
    form.Text = "Cursor Positioning Test";
    form.Visible = true;
    form.Shown += delegate(object sender, EventArgs args) {
      foreach (var control in form.Controls)
      {
        var textBox = control as TextBox;
        if (textBox != null)
        {
          textBox.Focus();
          textBox.SelectionStart = 2;
          textBox.SelectionLength = 0;
        }
      }
    };

    var textBox1 = new TextBox();
    textBox1.Text = "hello";
    textBox1.Left = 10;
    textBox1.Top = 10;
    form.Controls.Add(textBox1);

    var textBox2 = new TextBox();
    textBox2.Text = "stack";
    textBox2.Left = 10;
    textBox2.Top = 10 + textBox1.Height + 10;
    form.Controls.Add(textBox2);

    var textBox3 = new TextBox();
    textBox3.Text = "overflow";
    textBox3.Left = 10;
    textBox3.Top = 10 + textBox1.Height + 10 + textBox2.Height + 10;
    form.Controls.Add(textBox3);

    Application.Run(form);
  }
}

答案 1 :(得分:3)

试试这个,希望帮助你;)

//if you want put cusror at the end of text use this:
TextBox1.SelectionStart = TextBox1.Text.Length;
TextBox1.SelectionLength = 0;
//use this for custom location  int CustomIndex 
TextBox1.SelectionStart = CustomIndex;
TextBox1.SelectionLength = 0;

答案 2 :(得分:0)

// Windows表单maskedTextBox使用'##。####'掩码十进制(6,4)输入从右到左的testex;

private void maskedTextBoxMaskRTF_KeyPress(object sender,KeyPressEventArgs e)         {

        var maskedTextBox = (MaskedTextBox)sender;

        var contLit = maskedTextBox.Text.Where(ch => ".,".Contains(ch)).Count();

        var value = maskedTextBox.Text.Replace(".", "").Replace(",", "") + e.KeyChar;

        if (value.Length >= maskedTextBox.Mask.Length - contLit)
            value = value.Substring(1);
        else
            while (value.Length < maskedTextBox.Mask.Length - contLit)
                value = "_" + value;

        maskedTextBox.Text = value;
        maskedTextBox.SelectionStart = maskedTextBox.Mask.Length - 1;
        maskedTextBox.SelectionLength = 1;           
    }