【发布时间】:2013-06-19 14:21:36
【问题描述】:
我遇到了一个问题,希望有人能帮助我:) 我有一个文本框,我想限制用户,这样就不允许有两个 \ 在彼此之后。 我将它用于文件夹。例如:C\temp\test\ 现在我想让它无法输入 C\temp\test\\
我已经尝试过搜索这个问题,但我找不到任何类似的东西。所以我希望这是可能的:)
这是我的文本框现在的代码
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
Regex regex = new Regex(@"[^C^D^A^E^H^S^T^]");
MatchCollection matches = regex.Matches(textBox1.Text);
if (matches.Count > 0)
{
MessageBox.Show("Character niet toegestaan!");
textBox1.Text = "";
}
clsOpslagMedium objOpslag; // definieert type object
objOpslag = new clsOpslagMedium(); // creert opject in memory
objOpslag.DriveLetterString = textBox1.Text;
}
catch (Exception variableEx1)
{
MessageBox.Show("Foutmelding: " + variableEx1.Message);
}
}
我希望有人可以举一些例子,并且我提供了足够的信息:)
【问题讨论】:
-
你为什么不直接使用
textBox1.Text.Contains(@"\\")来测试你是否有两个 \\next 呢? -
请不要发布两次完全相同的问题。
-
对不起,pierre,我遇到了问题并发布了两次,我不是故意的
-
这是个坏主意。首先,路径允许包含两个反斜杠,例如
\\myserver\myshare\mydirectory\myfile.txt。其次,如果您希望用户浏览文件夹,请创建文件夹浏览器控件,而不是文本框。第三,无论如何,您都必须编写处理格式错误的路径的代码;除了两个反斜杠之外,还有很多方法可以使路径变形,所以不要费心限制输入。允许所有输入,然后在错误时给出一个好的错误消息。第五,捕获所有异常是一种不好的编程习惯;仅捕获您打算处理的异常。 -
第六,在人们键入时消除双反斜杠会导致糟糕的情况。例如,假设我输入
c:\d\e.txt,然后我意识到哎呀,我的意思是写c:\f\e.txt,所以我把光标放在d之后,按退格键,双反斜杠消失,现在我最终得到@ 987654327@ 或c:f\e.txt,这两个都不是我想要的。你在这里太聪明了,并且产生了令人沮丧和不可预测的用户体验。