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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обратиться к элементам формы из нового класса 
:(
    Опции темы
fedyunina
Дата 30.4.2012, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возможно проблема до жути банальна, но чего-то я запуталась.

ТЗ:
Есть форма, на ней элементы (pictureBox, dataGrid и тд)
Есть класс (дополнительно созданный)
В класс помещаю 2 функции, которые "общаются" с элементами формы.

Все бы хорошо, но внутри класса при такой конструкции:

Код

Color color = (pictureBox1.Image as Bitmap).GetPixel(Math.Abs(x - 5), Math.Abs(_y + deltaY));


он не видит элементы формы, что естественно
надо как-то явно указать, что этот pictureBox1 находится на Form1. 

И вот что-то не выходит...  smile 
PM MAIL Skype   Вверх
fedyunina
Дата 30.4.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вроде решилось, не знаю, насколько это корректно, но такое работает:

В файле Form1.Designer.cs меняю

Код

private System.Windows.Forms.PictureBox pictureBox1;


на 

Код

public System.Windows.Forms.PictureBox pictureBox1;


потом в коде класса 

Код

Form1 MainForm = new Form1();


и радуемся жизни:

Код

Color color = (MainForm.pictureBox1.Image as Bitmap).GetPixel(Math.Abs(x - 5), Math.Abs(_y + deltaY));


Добавлено через 6 минут и 27 секунд
И тут возникла другая проблема...
При таком обращении, почему-то значение pictureBox1.Image внутри класса = null  smile 
PM MAIL Skype   Вверх
IBS
Дата 30.4.2012, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я бы передал в метод(который изменяет цвет) элемент pictureBox1 и работал с ним, как мне захочется.

Это сообщение отредактировал(а) IBS - 30.4.2012, 13:33
PM MAIL   Вверх
fedyunina
Дата 30.4.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(IBS @  30.4.2012,  13:25 Найти цитируемый пост)
Я бы, передал в метод(который изменяет цвет) элемент pictureBox1 и работал с ним, как мне захочется. 


Да, так действительно гораздо проще smile Спасибо, за идею smile

PM MAIL Skype   Вверх
fedyunina
Дата 30.4.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проще в обращении, но грузит безумно программу, когда в цикле каждый раз передается картинка. 
Надо все же думать в направлении обращения к элементу формы.
PM MAIL Skype   Вверх
IBS
Дата 30.4.2012, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(fedyunina @  30.4.2012,  14:14 Найти цитируемый пост)
 передается картинка.

Зачем картинка? по ссылке
PM MAIL   Вверх
fedyunina
Дата 30.4.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(IBS @  30.4.2012,  14:46 Найти цитируемый пост)
Зачем картинка? по ссылке 


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

Раньше когда весь код лежал в Form1.cs в принципе все работало хорошо, но сейчас, есть желание разбить его на несколько файлов, чтобы не было свалки кода.

Т.е. либо надо как-то передать 1 раз картинку в класс, либо из класса дергать ее с формы. попробовала создать свойство:

Код

        public PictureBox Pic1 
        {
            get { return pictureBox1; }
            set { pictureBox1 = value; }
        }



Компилятор не ругается, но при попытки функции достучаться до картинки также null

Добавлено через 2 минуты и 42 секунды
Либо придумать как лучше цикл перенести тоже в класс и тогда передавать картинку и получать результат  smile 

Это сообщение отредактировал(а) fedyunina - 30.4.2012, 14:53
PM MAIL Skype   Вверх
IBS
Дата 30.4.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Этот метод принимает PictureBox 
Код

void f1(ref PictureBox pic)
{
     pic.Image ..........
}


А этот метод отдает PictureBox 
Код

void f2()
{
     f1(ref myPic);
}


Теперь компилятор на null при попытке достучаться ругаться не должен.
Походу так...

Это сообщение отредактировал(а) IBS - 30.4.2012, 15:21
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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