Решение найдено!


Здравствуйте!!
Очень надеюсь на чью-либо помощь. С формами работаю впервые, и что-то совсем никак не получается!

Мне нужно вывести массив (10 на 10) из кнопок, со случайными значениями от 1 до 9. Посчитать сумму всех выпавших значений и вывести результат на форму. Обязательно условие: использование классов и методов.


1. Собственно, массив выводится, но рэндом работает некорректно. Т.е. выдаёт всегда одно и то же число на всех кнопках, или на половину всего поля одно число, наполовину другое. Если поставить точку прерывания и запустить программу, то всё нормально выводится, все числа разные. В чём
может быть проблема?
Проблема решена. Спасибо _scorpicora_!!!!

2. Уже ума не приложу, как вывести значение суммы на форму? Т.е. я так понимаю, надо создать метод, который возвращает(?) сумму и добавляет её в текст лейбла? Или вообще не то? На форме создан label с именем (ID) Total_Label. Как сделать, чтоб в нём выводилась сумма? В общем, в классе Level попыталась что-то набросать, но чего-то там не хватает.

Код программы:

http://paste.org.ru/?iyqc5h - код формы (В 25-ой строке тоже никакого результата)

http://paste.org.ru/?gj3x7o - класс Level

http://paste.org.ru/?hvs3d5 - класс Buttons


Очень расчитываю, что кто-нибудь сможет помочь!!!!

P.S. Может кто посоветует учебный материал, примеры и т.д. как работать именно с формами на C#. Всё, что нашла - примеры в консольном приложении, которые не очень помогают.

@темы: Вопрос, Точка зрения, C#

Комментарии
03.06.2012 в 21:45

なんとかなるさ!
1. Проблема в том, что вы вставили
rand = new Random();
в конструктор класса Buttons. Если мне память не изменяет, в таком виде он использует текущее время для инициализации, которое за время между вызовами не успевает измениться. Рекомендую вынести это в класс Level (в CreateLevel или отдельный метод), инициализировать один раз и после этого задавать значения всем кнопкам.

2. Да, именно так. Кстати, считать сумму в конструкторе Buttons тоже некрасиво) Отдельный метод в Level будет значительно лучше.

И еще:

не знаю, что вы хотели сделать строкой
button.Click += new EventHandler(Button2_Click);
Но так делать не надо)
03.06.2012 в 22:16

_scorpicora_, Вынесла рэндом в класс Level, результат не изменился. До этого пробовала сделать метод, там тоже самое было. Может, конечно, я что-то не то делаю.

По поводу методов с кнопками. Мне просто надо чтоб при нажатии на кнопку она меняла цвет. И если ещё раз на ту же кнопку нажать, она принимала прежний цвет. Собственно, поэтому так получилось))
03.06.2012 в 22:27

なんとかなるさ!
Le grand esprit!,
Вынесла рэндом в класс Level, результат не изменился. До этого пробовала сделать метод, там тоже самое было. Может, конечно, я что-то не то делаю.
Покажите, что вы сделали.

По поводу методов с кнопками. Мне просто надо чтоб при нажатии на кнопку она меняла цвет.
А! А не проще ли при нажатии на кнопку смотреть, какой у нее цвет сейчас, и в зависимости от этого менять) То есть просто if else использовать.
03.06.2012 в 22:46

_scorpicora_,
Пока строчила для Вас код, нашла ошибку, и всё исправилось!! Спасибо!! :red:

По поводу кнопок, честно говоря, начала делать именно так, как Вы предложили, но почему-то вместо else я вдруг решила использовать второй раз if, конечно же ничего не получилось, поэтому и прописала клики. Ещё раз спасибо))) теперь там тоже исправила!!
04.06.2012 в 14:27

ублюдок без всяких признаков головы
Total_Label.Text = sum.ToString();
где sum - соответствующее число.

рекомендую посмотреть cyberforum.ru
там и материалы, и примеры разобраны, и ответы на огромное количество вопросов разной степени сложности.