Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Пауза в цикле С# WindowsForms

#c_sharp #winforms


Доброго времени суток, сообщество. Помогите начинающему программисту на С# WindowsForms.
Есть задание: написать программу для подсчета


  X=x1+x2+...+xn, xn=zn^3-bn+an^2/tan(Bettan). 


На форме Form1 я ввожу n, и хочу чтобы для каждого xn открывалась форма для ввода
z,a,b,betta. Решил сделать в цикле:

for (i = 0; i < n; i++)
{
    Input.Show();
    X[i] = Z[i] * Z[i] * Z[i] - B[i] + (A[i] * A[i]) / Math.Tan(Betta[i]);
}


Но цикл открывает сразу n форм, это не удобно. Паузу в цикле я тоже реализовать не
смог. Вопрос: "Как мне сделать так чтобы формы открывались по одной? Или может подскажите,
как сделать удобный ввод данных другим способом?" Заранее спасибо всем кто откликнется.
    


Ответы

Ответ 1



Для решения вашей задачи и ввода значений z, a, b, betta в цикле по очереди вы можете использовать (почти) любую форму, унаследованную от стандартной с полями (полем ввода), вызывая её через ShowDialog() а не через Show(). Например, если ваша форма Input унаследована от стандартной формы, то вызывайте ее так: Input.ShowDialog(); Можно расширить функционал и обрабатывать какие-то дополнительные условия, если еще и обработать результат такого вызова, например, так: if (Input.ShowDialog() == DialogResult.OK) {.......//Что-то делаем} else if (if (Input.ShowDialog() == DialogResult.Cancel)) { //Пользователь нажал отмену или просто закрыл форму } Если вызывать именно ShowDialog(), то ваша форма вызывается как модальная форма, т.е. в вашем случае программа не продолжит свою работу (цикл), пока форма висит на экране и пользователь не закрыл ее тем или иным способом. Вместо такой формы можно использовать InputBox: string input = Microsoft.VisualBasic.Interaction.InputBox("Prompt", "Title", "DefaultValue", -1, -1); Или реализовать свою форму, как, например, предлагается сделать это тут. P.S. Я бы не использовал такой подход, разве что в целях отладки, да и то, если n достаточно невелико, а то если оно, к примеру, будет 50 или 100, то пользователь замучается вводить значения. Но это уже совсем другой вопрос.

Комментариев нет:

Отправить комментарий