Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с Winforms в C# 
:(
    Опции темы
grokk
Дата 4.6.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.5.2008

Репутация: нет
Всего: нет



Есть следующий код:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace Project3
{
public class GameForm : Form
{
public static void Main()
{
GameForm newGameForm = new GameForm();
}
private static int s_ButtonSize = 30;
private Button[] m_ColumnButtons;
private Button[,] m_GameButtons;
public GameForm()
{
Init();
StartNewGame();
}
public void Init()
{
this.Text = "4 in Line Game";
this.FormBorderStyle = FormBorderStyle.Fixed3D;
this.Size = new Size(500, 500);
this.StartPosition = FormStartPosition.CenterScreen;
//initiate power buttons
m_ColumnButtons = new Button[3];
for (int i = 0; i < 3; i++)
{
m_ColumnButtons[i] = new Button();
m_ColumnButtons[i].Size = new Size(s_ButtonSize, s_ButtonSize);
m_ColumnButtons[i].Location = new Point(i * s_ButtonSize, 0);
m_ColumnButtons[i].Text = i.ToString();
m_ColumnButtons[i].Click += new EventHandler(NewTurn);
this.Controls.Add(m_ColumnButtons[i]);
}
m_GameButtons = new Button[3, 3];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
m_GameButtons[i, j] = new Button();
m_GameButtons[i, j].Size = new Size(s_ButtonSize, s_ButtonSize);
m_GameButtons[i, j].Location = new Point(i * s_ButtonSize, s_ButtonSize + (j * s_ButtonSize));
m_GameButtons[i, j].Enabled = false;
this.Controls.Add(m_GameButtons[i, j]);
}
}
}
public void MakeEmptyTable()
{
//enable power buttons
for (int i = 0; i < 3; i++)
{
m_ColumnButtons[i].Enabled = true;
}
//clear game form and matrix
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
m_GameButtons[i, j].Text = " ";
}
}
}
public void StartNewGame()
{
MakeEmptyTable();
Init();
this.ShowDialog();
}
private void NewTurn(object sender, EventArgs e)
{
m_GameButtons[1, 1].Text = "O";
}
}
}
 

Почему-то хотя программа заходит в NewTurn, надпись на кнопке не меняется  Где я ошибся?


PM MAIL   Вверх
DVariuS
Дата 4.6.2009, 11:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: 2
Всего: 8



grokk, обращаться к кнопкам необходимо через свойство Controls формы. В твоем коде надпись на кнопке изменяется, только кнопка эта в массиве а не на форме.
Присмотрелся получше и понял, что это происходит из-за того, что ты 2 раза вызываешь метод Init() и массив с кнопками создается повторно. Это приводит к тому, что ссылки на кнопки в массиве не совпадают с ссылками кнопок на форме.

Это сообщение отредактировал(а) DVariuS - 4.6.2009, 11:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.