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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перехват события 
:(
    Опции темы
HiVeR
Дата 20.7.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



учусь обрабатывать события, и начал с простого примера: при установке фокуса на кнопку3 - перехват и должен выскочить MessageBox, вроде бы всё правильно сделал, но при компияляции выдаёт ошибку: Inconsistent accessibility: field type 'WindowsApplication21.EventHandler' is less accessible than field 'WindowsApplication21.MySob.sob'(перевод промта - Непоследовательная доступность: полевой тип 'WindowsApplication21. EventHandler' менее доступен чем полевой 'WindowsApplication21. MySob.sob')...

на форме три кнопки, вот сам код:

Код

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication21
{
//Объявление делегата.
delegate void EventHandler();
//Объявление класса с событием.
    public class MySob
    {
        //Объвление события на основе делегата.
        public event EventHandler sob; //тут выскакивает ошибка - Inconsistent accessibility: field type 'WindowsApplication21.EventHandler' is less accessible than field 'WindowsApplication21.MySob.sob'
        //Объвление метода, в котором вызывается событие.
        public void metodsob()
        {
//установка фокуса на кнопку3
            if (button3.Focus != null )
                button3.Focus();
        }
    }

    public class Form1 : System.Windows.Forms.Form
    {
...//описание кнопок, формы и прочего
        static void Main() 
        {
            Application.Run(new Form1());
        }
 //Обработчик для события.
        public static void ObrSob()
        {
            MessageBox.Show("ura");
        }
        public void button1_Click(object sender, System.EventArgs e)
        {
//Создаем экземпляр класса с событием.
//Добавление обработчика события.
//Вызов метода, в котором вызывается событие.
        MySob sobNew=new MySob();
        sobNew.metodsob+=new EventHandler(ObrSob);
        sobNew.metodsob();
        }
        public void button2_Click(object sender, System.EventArgs e)
        {
//Выключение обработчика события.
        sobNew.metodsob-=new EventHandler(ObrSob);
        }
    }
}

почему выскакивает ошибка?

Это сообщение отредактировал(а) HiVeR - 20.7.2008, 17:35
PM MAIL   Вверх
mihryak
Дата 20.7.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну так сделай свой делегат public'ом

пс. переименовал бы ты его, делегат с таким именем есть в System
Код

public delegate void EventHandler(Object sender, EventArgs e)

с точки зрения компиляции это не ошибка, но лучше не создавать без необходимости сущности с теми же именами, что и системные аналоги - приводит к путанице у читающего код
PM MAIL ICQ   Вверх
nikitao
Дата 20.7.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


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

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



HiVeR, смотрите ( обьясню то что сказал mihryak) :

 У вас MySob public. Это значит что его можно создавать где угодно. Также в нем объявлено событие как public , значит к нему тоже можно обращаться где угодно , но тип этого события private! Т е возникает противоречие smile 




--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
HiVeR
Дата 20.7.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо mihryak и nikitao, та ошибка решилась и я получил штук 5 новых в подарок...((
пытался разобрацца с ошибками - чтот не получилось, я новичок и может понатворил лишнего, помогите пожта сделать рабочий код smile , обычно получалось исправлять ошибки, счас не тот случай...((

три ошибки в этих двух строчках:
if (button3.Focus != null )
                button3.Focus();
1ая(button3.Focus) - Cannot access a nonstatic member of outer type 'WindowsApplication26.Form1' via nested type 'WindowsApplication26.Form1.MySob'
2ая(Focus) -  Method 'System.Windows.Forms.Control.Focus()' referenced without parentheses
3ья(button3) - Cannot access a nonstatic member of outer type 'WindowsApplication26.Form1' via nested type 'WindowsApplication26.Form1.MySob'

sobNew.metodsob+=new EventHandler(ObrSob);
4ая(metodsob) - 'WindowsApplication26.Form1.MySob.metodsob()' denotes a 'method' which is not valid in the given context

sobNew.metodsob-=new EventHandler(ObrSob);
5ая(sobNew) - The type or namespace name 'sobNew' could not be found (are you missing a using directive or an assembly reference?)

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

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


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

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


 




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


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

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