Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как в C# из события получить доступ к компоненту на форме?

34K
01 декабря 2008 года
Kondor775
7 / / 29.02.2008
Здравствуйте. У меня такая проблема: в C# происходит событие в классе, подключенном через DLL. но не получается из этого события обратиться например к компоненту на форме textbox1, ни даже к переменной, объявленной в Program.cs
1.8K
01 декабря 2008 года
CilCatblack
251 / / 20.09.2007
Проверь какой у компанентов доступ в дизайнере формы, доджен быть public:)
34K
01 декабря 2008 года
Kondor775
7 / / 29.02.2008
попробовал, не катит. Препод говорит, что вроде дело в том, что событие запускается в другом потоке. к обычной переменной ведь тоже нет доступа
5
01 декабря 2008 года
hardcase
4.5K / / 09.08.2005
Телепаты в отпуске.
1.8K
02 декабря 2008 года
CilCatblack
251 / / 20.09.2007
Код в студию:)
34K
02 декабря 2008 года
Kondor775
7 / / 29.02.2008
dll'ка Tamir.IPLib.SharpPcap.dll, событие в Form1.cs:

Цитата:
private static void device_PcapOnPacketArrival(object sender, Tamir.IPLib.Packets.Packet packet)
{

}



подписываюсь на него в:

Цитата:
private void button2_Click(object sender, EventArgs e)
{
device = devices[1];
//Register our handler function to the
//'packet arrival' event
device.PcapOnPacketArrival += new SharpPcap.PacketArrivalEvent(device_PcapOnPacketArrival);



и в событии недоступны компоненты, которые на форме. Объявление события брал из примера. Может неправильно объявил, или не в том месте. Препод говорит, что событие запускается в другом процессе, и поэтому надо каким-то образом использовать делегаты, для связи

5
02 декабря 2008 года
hardcase
4.5K / / 09.08.2005
Красное - убрать.
 
Код:
private [COLOR=Red]static [/COLOR]void device_PcapOnPacketArrival(object sender, Tamir.IPLib.Packets.Packet packet)
        {
           
        }
34K
02 декабря 2008 года
Kondor775
7 / / 29.02.2008
Заработало:) спасибо! а в примере по этому компоненту функция была описана именно как статическая. Не будет ли каких-нибудь подводных траблов?
ЗЫ. Не работает оказывается((( теперь компоненты доступны, но при обращении выводит ошибку "Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." То есть похоже это связанно как раз с тем, что компоненты выполняются в разных потоках
5
02 декабря 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Kondor775
"Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." То есть похоже это связанно как раз с тем, что компоненты выполняются в разных потоках

Использовать связку InvokeRequired и BeginInvoke/Invoke. Тут примеры использования были в соседних ветках.

34K
05 декабря 2008 года
Kondor775
7 / / 29.02.2008
Разобрался. Огромное спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог