好的,所以我正在制作一个自动轮询,我希望用户能够输入密钥{}()^ +并将应用程序输出。我知道你需要格式化像SendKeys.Send({^});但我不能让这个工作。到目前为止我的计时器嘀嗒声是什么。另外,我有全局int blockCount,它告诉程序转到blockText字符串中的下一个字符 它返回“组别分隔符不均衡”。
private void timer3_Tick(object sender, EventArgs e)
{
string blockText = richTextBox1.Text;
int blockLength = richTextBox1.TextLength;
btrand = RandomNumber(75, 200); //I have a method to make a rand num
timer3.Interval = btrand;
char[] specialChars = { '{', '}', '(', ')', '+','^' };
foreach (char letter in blockText)
{
for (int i = 0; i < specialChars.Length; i++)
{
if (letter == specialChars[i])
{
SendKeys.Send("{" + specialChars[i] + "}");
blockText.Remove(blockText.IndexOf(specialChars[i].ToString()));
}
else
{
SendKeys.Send(letter.ToString());
}
}
}
blockCount++;
if (blockCount >= blockLength)
{
blockCount = 0;
}
}
答案 0 :(得分:0)
好的,快速分析,如果我错过了什么,请原谅我。
我建议这样的实现:
foreach (char letter in blockText)
{
bool _specialCharFound = false;
for (int i = 0; i < specialChars.Length; i++)
{
if (letter == specialChars[i])
{
_specialCharFound = true;
break;
}
}
if (_specialCharFound)
SendKeys.Send("{" + letter.ToString() + "}");
else
SendKeys.Send(letter.ToString());
}
有更多优化的实现方法,但我会选择这个方法,目的明确,与原始代码相似。