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