#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, то пользователь замучается вводить значения. Но это уже совсем другой вопрос.
Комментариев нет:
Отправить комментарий