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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как из класса размещать контролы на форму 
V
    Опции темы
transkriptsiya
Дата 19.1.2015, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот так розмещаю лейблы на форму автоматом 

Код

 private void init_key()
        {
            keys = new Label[102];//разместить на форме 102 кнопки
            int key_w = panel44.Width / 10;  // ширина кнопки вычитается из ширины панели
            int key_h = panel44.Height / 11;

            for (int i = 0; i <= 101; i++)
            {
                keys[i] = new Label();
                keys[i].Location = new Point(i % 10 * key_w, i / 10 * key_h);
                keys[i].Size = new Size(key_w -3, key_h - 2);
                keys[i].Text = i.ToString();
              
                panel44.Controls.Add(keys[i]);
            }
        
        }


все отлично работает из класса програм, а как мне этот код перенести в отдельный класс? Переношу в отдельный клас и там он не видит мою панель на форме panel44. 
PM MAIL   Вверх
infarch
Дата 20.1.2015, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Передайте ссылку на панель в метод.
PM MAIL   Вверх
transkriptsiya
Дата 22.1.2015, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(infarch @ 20.1.2015,  10:39)
Передайте ссылку на панель в метод.

спасибо.



Это сообщение отредактировал(а) transkriptsiya - 22.1.2015, 12:20
PM MAIL   Вверх
transkriptsiya
Дата 22.1.2015, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

Label[] keys;

        public void init_key(Panel pl) //передаю в качестве параметров панель из основной формы
        {
            keys = new Label[102];
            int key_w = pl.Width / 10;  // ширина кнопки вычитается из ширины панели
            int key_h = pl.Height / 11;

            for (int i = 0; i <= 101; i++)
            {
                keys[i] = new Label();
                keys[i].Location = new Point(i % 10 * key_w, i / 10 * key_h);
                keys[i].Size = new Size(key_w, key_h);
              
                keys[i].MouseHover += new System.EventHandler(this.label_mouse_hover);//??
              
                pl.Controls.Add(keys[i]);
            }

        }


Подскажите, еще. Вот я из класса динамически на форму размещаю лейблы - все ок. А как мне этим лейблам еще и события назначать - это через делегаты делается?

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


Опытный
**


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

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



Цитата(transkriptsiya @ 22.1.2015,  15:42)
Код

Label[] keys;

        public void init_key(Panel pl) //передаю в качестве параметров панель из основной формы
        {
            keys = new Label[102];
            int key_w = pl.Width / 10;  // ширина кнопки вычитается из ширины панели
            int key_h = pl.Height / 11;

            for (int i = 0; i <= 101; i++)
            {
                keys[i] = new Label();
                keys[i].Location = new Point(i % 10 * key_w, i / 10 * key_h);
                keys[i].Size = new Size(key_w, key_h);
              
                keys[i].MouseHover += new System.EventHandler(this.label_mouse_hover);//??
              
                pl.Controls.Add(keys[i]);
            }

        }


Подскажите, еще. Вот я из класса динамически на форму размещаю лейблы - все ок. А как мне этим лейблам еще и события назначать - это через делегаты делается?

да, через делегаты. Передаёшь делегат в функцию и добавляешь его в нужное событие
PM MAIL   Вверх
transkriptsiya
Дата 24.1.2015, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что-то не получается.
 есть событие 

Код

private void label_mouse_hover(object sender, EventArgs e)
        {
            ((Label)sender).ForeColor = Color.Red;
                       
        }



1. в основном классе делаю делегат под это событие

 public delegate void My_del(object sender, EventArgs e);
а дальше непонятно



PM MAIL   Вверх
sgrey
Дата 24.1.2015, 05:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(transkriptsiya @ 24.1.2015,  00:37)
Что-то не получается.
 есть событие 

Код

private void label_mouse_hover(object sender, EventArgs e)
        {
            ((Label)sender).ForeColor = Color.Red;
                       
        }



1. в основном классе делаю делегат под это событие

 public delegate void My_del(object sender, EventArgs e);
а дальше непонятно

в основном классе создаёшь переменную класса 
Код

My_del func = label_mouse_hover;

в том классе, где находятся все Label 
делаешь функцию, что-то вроде
Код

public void assignCallback(My_del p)
{
    for(int i = 0; i < keys.Length; ++i)
    {
        keys[i].MouseOver += new EventHandler(p);
    }
}

передаёшь туда созданный в основном классе делегат и всё. 

Это сообщение отредактировал(а) sgrey - 24.1.2015, 05:24
PM MAIL   Вверх
sgrey
Дата 24.1.2015, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



неплохая статья со ссылками про делегаты http://habrahabr.ru/post/198694/
PM MAIL   Вверх
transkriptsiya
Дата 24.1.2015, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(sgrey @ 24.1.2015,  05:04)
Цитата(transkriptsiya @ 24.1.2015,  00:37)
Что-то не получается.
 есть событие 

Код

private void label_mouse_hover(object sender, EventArgs e)
        {
            ((Label)sender).ForeColor = Color.Red;
                       
        }



1. в основном классе делаю делегат под это событие

 public delegate void My_del(object sender, EventArgs e);
а дальше непонятно

в основном классе создаёшь переменную класса 
Код

My_del func = label_mouse_hover;

в том классе, где находятся все Label 
делаешь функцию, что-то вроде
Код

public void assignCallback(My_del p)
{
    for(int i = 0; i < keys.Length; ++i)
    {
        keys[i].MouseOver += new EventHandler(p);
    }
}

передаёшь туда созданный в основном классе делегат и всё.

Чудеса на виражах - все летает. Гранд мерси smile 

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

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


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

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


 




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


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

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