Я пытался создать приложение формы windows, где я программно создаю TextBox после выполнения определенных условий. Однако, когда я по какой-то причине запускаю код, он работает так, как если бы не было операторов if. Я попытался добавить больше условий, чтобы предотвратить это, и я также попытался посмотреть, были ли найдены какие-либо условия истинными, когда они должны были быть ложными. Я не знаю что делать Вот мой код:
private void fmaEquation(object sender, EventArgs e)
{
// get whether any textboxes hold any of these strings
bool f = IfVarIsThere("f");
bool m = IfVarIsThere("m");
bool a = IfVarIsThere("a");
// if textbox has not been added but 2 of 3 variables are given
Console.WriteLine("F: " + f + " M: " + m + " A: " + a + " eqNum: " + eqNum + " Contains? " + this.Controls.Contains(eq[eqNum]));
if (!(this.Controls.Contains(eq[eqNum])) && ((f && m) || (m && a) || (f && a)))
{
eq[eqNum] = new TextBox();
eq[eqNum].Location = new System.Drawing.Point(10 + 3 * txtSize, 30 + eqNum * 20);
eq[eqNum].Size = new System.Drawing.Size(txtSize, 10);
this.Controls.Add(eq[eqNum]);
eq[eqNum].Text = "f = m * a";
}
// else, if the textbox is there, but 2 of 3 variables are not there
else if ( !((f && m) || (m && a) || (f && a)) && this.Controls.Contains(eq[eqNum]))
{
this.Controls.Remove(eq[eqNum]);
}
}
private bool ifVarIsThere(String s) // loop through array to see whether String s is in any of the variable textboxes
{
for (int i = 0; i < varNum; i++)
{
if (var[i].Text.ToLower() == s)
{
return true;
}
}
return false;
}
По какой-то причине текстовое поле будет добавлять себя, затем удалять себя, затем повторно добавлять себя и повторять в бесконечном цикле. Я также запускаю этот метод в фоновом режиме.