所以我有一个列表框,我将随机元音/缺点,我想根据列表框上的这些键限制该人可以在文本框上写的内容。到目前为止,我只允许列表框中的内容,但您可以根据需要多次使用它(例如,您在列表框中有ABIIDC,您可以在texbox上键入aaaaaaabbbbbiiiiiidddddddc),我想要的是他们能够使用每个键在列表框中出现的次数(在前一种情况下,一次,一次,两次,一次,一次)。 这就是我到目前为止所做的:
private bool denykey = false;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
denykey = false;
if (!listBox1.Items.Contains(e.KeyCode))
{
denykey = true;
}
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (denykey == true)
{
e.Handled = true;
}
if(Control.ModifierKeys == Keys.Control)
{
e.Handled = true;
}
}
不介意“控制”部分,只是为了防止复制和粘贴
答案 0 :(得分:0)
好的,在一些朋友的帮助下,我能够得到我想要的东西,这就是我们所做的:
private bool denykey = false;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
denykey = false;
return;
}
var countText = 0;
foreach (var letter in textBox1.Text)
if (letter.Equals(e.KeyCode.ToString()[0]))
countText = countText + 1;
var countList = 0;
foreach (var letterList in listBox1.Items)
if (letterList.ToString().Equals(e.KeyCode.ToString()))
countList = countList + 1;
denykey = false;
if (countText >= countList)
denykey = true;
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (denykey == true)
{
e.Handled = true;
}
if(Control.ModifierKeys == Keys.Control)
e.Handled = true;
}