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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обращение к кнопкам! 
:(
    Опции темы
retto
Дата 17.3.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



При загрузке формы создаются кнопки (кол-во зависит от того сколько хочет пользователь):
Код

  for (int j = 1; j < Ryad + 1; j++)
                {
                    System.Windows.Forms.Button nB = new Button();
                    nB.ForeColor = Color.White;
                    nB.Top = Xkoor + 10;
                    nB.Left = Ykoor + 10;
                    nB.Height = 30;
                    nB.Width = 30;
                    nB.Text = j.ToString();
                    nB.Name = i.ToString();
                    nB.Font = f;
                    nB.BackColor = Color.Red;
                    this.Controls.Add(nB);
                    nB.MouseDown += new MouseEventHandler(bt_mouseDown);
                    nB.MouseMove += new MouseEventHandler(bt_mouseMove);
                    nB.MouseUp += new MouseEventHandler(bt_mouseUp);
                    nB.MouseEnter += new EventHandler(bt_mouseEnter);
                    nB.MouseLeave += new EventHandler(bt_mouseLeave);
                    Ykoor += 30;
                }


После нужно сохранить координаты всех добавленных в цикле кнопок. Как это сделать? Видь на прямую нельзя обратится к созданой кнопке
PM MAIL   Вверх
_hunter
Дата 17.3.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(retto @  17.3.2008,  15:49 Найти цитируемый пост)
Как это сделать?

взять и сохранить их...

Цитата(retto @  17.3.2008,  15:49 Найти цитируемый пост)
Видь на прямую нельзя обратится к созданой кнопке 

как это нельзя? -- а это:

Цитата(retto @  17.3.2008,  15:49 Найти цитируемый пост)
                   nB.ForeColor = Color.White;
                    nB.Top = Xkoor + 10;
                    nB.Left = Ykoor + 10;

что по-твоему? -- самое натуральное обращение...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
retto
Дата 17.3.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



_hunter,  это обращение можно вызвать только при вызове какогото события, например при нажатии:

Код

 private void bt_mouseDown(object sender, EventArgs e)
        {
            Button bv = new Button();
            bv = (Button)sender;
            switch (EditZaL)
            {
                case 1:
                    if (k == false)
                    {
                        p = new Point(Cursor.Position.X, Cursor.Position.Y);

                        k = true;
                    }
                    else
                    {
                        k = false;
                        this.Cursor = Cursors.Default;
                    }
                    break;
                case 2:
                    

                    break;
                case 3:
                    bv.Dispose();
                    this.Cursor = Cursors.Default;
                    break;
            }
        }


и при этом пользователь может перемещать кнопки по форме пока ему не надоест. И после этого ему надо сохранить координаты каждой кнопки!! ему что на каждую кнопку наводить чтоли?


Решил эту "проблему" вот так:
for (int i = 1; i < Controls.Count; i++)
            {
                richTextBox1.AppendText(Controls[i].Name.ToString() + " " 
                    + Controls[i].Location.X.ToString() + " " 
                    + Controls[i].Location.Y.ToString()+"\n");
            }

Это сообщение отредактировал(а) retto - 17.3.2008, 17:17
PM MAIL   Вверх
Rififi
Дата 17.3.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



только я один ничего не понял?

ps.
Код

          Button bv = new Button();
            bv = (Button)sender;
...
                    bv.Dispose();


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


Опытный
**


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

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



 smile  smile 
Rififi, чувак все правильно делает! Везде же пишут, что хорошей практикой является инициализация переменных в момент их объявления. Вот человек так и поступает. smile 
хотя наверное не стоит стебаться над чужим кодом, это не этично...


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
_hunter
Дата 18.3.2008, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(vponomarov @  17.3.2008,  21:19 Найти цитируемый пост)
 Везде же пишут, что хорошей практикой является инициализация переменных в момент их объявления. 

так это не инициализация. это "потеря" указателя -- создаем объект и потом на него забиваем (и работаем с другим объектом)...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
vponomarov
Дата 18.3.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

так это не инициализация. это "потеря" указателя -- создаем объект и потом на него забиваем (и работаем с другим объектом)... 

я понимаю. это был сарказм smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
retto
Дата 20.3.2008, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Rififi @ 17.3.2008,  21:15)
только я один ничего не понял?

ps.
Код

          Button bv = new Button();
            bv = (Button)sender;
...
                    bv.Dispose();


мрак smile

ну и что здесь непонятного? Если так, то скажи как мне обратиться к созданой кнопке?
Если есть другой нормальный способ, скажи какой.
А  bv.Dispose(); это чтобы пользователь мог убить кнопку (это такая программа)))


Это сообщение отредактировал(а) retto - 20.3.2008, 09:57
PM MAIL   Вверх
vponomarov
Дата 20.3.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

ну и что здесь непонятного? Если так, то скажи как мне обратиться к созданой кнопке?

тут пытались сказать, что последовательность строк кода:
Код

Button bv = new Button();
            bv = (Button)sender;

лишина смысла т.к. первая строка говорит о том, что нужно создать новую кнопку, а вторая тут же заменяет ее уже существующей (на которую кликнули) и в итоге указатель на новую теряется и ты с ней уже ничего не сделаешь:(
короче, первую строчку нужно удалить smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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