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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кнопка создаёт другую кнопку 
:(
    Опции темы
slavaentp
Дата 8.1.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хочу сделать так, чтобы при нажатии на кнопку(программа Windows.Forms) создавалась рядом такая же кнопка(с таким же свойством - при нажатии на неё рядом создаётся снова такая же кнопка и т.д.).

Задача простая, но поскольку количество кнопок потенциально неограничено,  я не понял, какие там переменные должны использоваться, как называть эти кнопки и т.д.

Это сообщение отредактировал(а) slavaentp - 8.1.2009, 19:06
PM MAIL   Вверх
Drabuna
Дата 8.1.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Код

    public partial class Form1 : Form
    {
        int X;
        int Y;

        public Form1()
        {
            InitializeComponent();
            X = button1.Location.X;
            Y = button1.Location.Y;
        }

        void newb_Click(object sender, EventArgs e)
        {
            Button newb = new Button();
            newb.Text = "button";
            newb.Click += new EventHandler(newb_Click);
            newb.Left = X+10;
            newb.Top = X + 10;
            X = newb.Top;
            Y = newb.Left;
            ActiveForm.Controls.Add(newb);
        }
    }

PM MAIL   Вверх
slavaentp
Дата 8.1.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Drabuna

Суть в том, что таких кнопок может быть много. И их количество неизвестно(будет создаваться пользователем при использовании программы). И вопрос в том, как НАЗЫВАТЬ эти кнопки. Они же все не могут быть "newb"?

Добавлено через 5 минут и 38 секунд
UPDATE: Да, это работает. А как этими кнопками управлять? Они же имеют одно и то же имя - newb.
PM MAIL   Вверх
Drabuna
Дата 8.1.2009, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



А зачем их называть? Если тебе надо прям до таких тонкостей то создай массив кнопок. В конце концов можно обращатся по айди елемента на форме. Если тебе надо получить свойство нажатой кнопки используй (Button(sender)).

Скажи какую функцию они будут выполнять)
PM MAIL   Вверх
slavaentp
Дата 8.1.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Это циферкиsmile Кнопки "1", "2", "3" и т.д. Когда жмёшь на неё - это значит, что нажал цифру. Потом программа будет сравнивать эту цифру с "нужной" и т.д.
PM MAIL   Вверх
Drabuna
Дата 8.1.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дивелоперчег
*


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

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



Код

int nomerciferki=0;


И в событие нажатия дописываешь 

Код

            newb.Text = nomerciferki.ToString();
            nomerciferki++;


Это сообщение отредактировал(а) Drabuna - 8.1.2009, 19:37
PM MAIL   Вверх
Miller_time
Дата 8.1.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

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



Код

        private void button1_Click(object sender, EventArgs e)
        {
            Button[] bt = new Button[10];
            int posy = 31;
            int posx = 31;
            int i = 0;


            while (i < 9)
            {
                bt[i] = new Button();
                bt[i].Location = new System.Drawing.Point(posx, posy);
                bt[i].Name = "button_i_" + i.ToString();
                bt[i].Size = new System.Drawing.Size(75, 23);
                bt[i].TabIndex = 0;
                bt[i].Text = "button_i_" + i.ToString();
                bt[i].UseVisualStyleBackColor = true;
                Controls.Add(bt[i]);

                posx += 50;
                posy += 50;
                i++;
            }

        }


Пробуй


--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
slavaentp
Дата 8.1.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Создал через массив. Кнопки создаются.

А как определить, какая из них нажата?
PM MAIL   Вверх
nagg
Дата 8.1.2009, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Каждой кнопкой в томже цикле подписаться на событие Клик. А в обработчике аргумент sender - и будет обьект нажатой кнопки.
--------------------
I am the State...
PM MAIL WWW ICQ Skype   Вверх
Miller_time
Дата 9.1.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

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



Код

        private void button1_Click(object sender, EventArgs e)
        {
            Button[] bt = new Button[10];
            int posy = 31;
            int posx = 31;
            int i = 0;


            while (i < 9)
            {
                bt[i] = new Button();
                bt[i].Location = new System.Drawing.Point(posx, posy);
                bt[i].Name = "button_i_" + i.ToString();
                bt[i].Size = new System.Drawing.Size(75, 23);
                bt[i].TabIndex = 0;
                bt[i].Text = "button_i_" + i.ToString();
                bt[i].UseVisualStyleBackColor = true;
                bt[i].Click += new System.EventHandler(Click);
                Controls.Add(bt[i]);

                posx += 50;
                posy += 50;
                i++;
            }

        }


        private void Click(object sender, EventArgs e)
        {
            MessageBox.Show(sender.ToString());
        }




http://forum.vingrad.ru/forum/topic-239275...1%8B%D1%85.html



См. топик выше.

Добавлено через 26 секунд
Тоесть по ссылке выше перейди.


--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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