我的情景是:
输入一个或多个字符后,文本框的起始位置不允许使用空格文本框允许使用空格
以下不适用于我的情景。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.Handled = (e.KeyChar == (char)Keys.Space))
{
MessageBox.Show("Spaces are not allowed");
}
}
textBox1.Text.TrimStart()
答案 0 :(得分:2)
我相信lazyDBA的答案对你的要求是正确的,所以在消息框中就像这样:
if (textBox1.Text.Length == 0)
{
if (e.Handler = (e.KeyChar == (char)Keys.Space))
{
MessageBox.Show("space not allowed!");
}
}`
答案 1 :(得分:1)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) \
{
if(textBox1.Text.Length == 0)
{
if (e.Handled = (e.KeyChar == (char)Keys.Space))
{
MessageBox.Show("Spaces are not allowed at start");
}
}
}
答案 2 :(得分:1)
由于你没有简单描述,如果我没有错,你想在右边开始修剪空格?
然后我的回答是,你可以用很多方式处理它,一种可能的方法是以下面的方式处理它。我在下面写的一些示例代码,您可以查看它,它在我的示例应用程序中运行完美:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((textBox1.SelectionStart == 0) && (e.KeyChar == (char)Keys.Space))
{
e.Handled = true;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
//Store the back up of Current Cursor Possition.
int cusorpos = textBox1.SelectionStart;
if (false == string.IsNullOrEmpty(textBox1.Text))
{
if (textBox1.Text[0] == ' ')
{
//Trim Spaces at beginning.
textBox1.Text = textBox1.Text.TrimStart(' ');
//Set the Cursor position to current Position.
textBox1.SelectionStart = cusorpos;
}
}
}
正如你在这里看到的,我写了两个事件,因为如果任何正文在开头粘贴一个带空格的文本,那么在你的文本框控件中它将完美地从头开始删除空格。
答案 3 :(得分:0)
尝试
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.Handled = (e.KeyChar == (char)Keys.Space))
{
if(((TextBox)sender).Text.Replace(" ","") == "")
{
MessageBox.Show("Spaces are not allowed");
((TextBox)sender).Text = string.Empty;
}
}
}
答案 4 :(得分:0)
在KeyPress
事件
if ((sender as TextBox).Text.Length <= 0)
e.Handled = (e.KeyChar == (char)Keys.Space);
else
e.Handled = false;
如果您必须使其工作,以防万一用户在输入某个文本后移动到TextBox
字段的开头并尝试输入空格,那么这也将禁用
void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((sender as TextBox).SelectionStart == 0)
e.Handled = (e.KeyChar == (char)Keys.Space);
else
e.Handled = false;
}
答案 5 :(得分:0)
您说第一个选项不适用。第一个选项的版本如何使用相同的事件和类似的代码,但在第二个IF语句中。除非文本框中还有其他字符,否则这将使空格无法工作。
if (textBox1.Text.Length == 0)
{
e.Handled = (e.KeyChar == (char)Keys.Space))
}
答案 6 :(得分:0)
你应该使用正则表达式
string strRegex = @"^([\w]+.*)$";
string strTargetString = textBox1.Text;
if (!Regex.IsMatch(strTargetString, strRegex))
{
// show error that spase not allow at the bigin of string
}