Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Не обрабатывает события формы


Автор: dimas_sceen 6.7.2008, 11:09
Такой вопрос, после размещения на форме экземпляра класса унаследованного от  контрола, форма не обрабатывает события. Как ее заставить их обрабатывать?

Код

using System.Windows.Forms;
namespace DeviceApplication1
{
    public partial class Form1 : Form
    {
        cls l;
        public Form1()
        {
            InitializeComponent();
            l = new cls();
            l.Parent = this;
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("Down");
        }
    }
}
public class cls : UserControl
{
    public cls()
    {
        this.KeyDown += new KeyEventHandler(listeng_KeyDown);
    }
    void listeng_KeyDown(object sender, KeyEventArgs e)
    {
        MessageBox.Show("cls DOWN");
    }
}


Если убрать "l.Parent = this;" то тогда форма будет обрабатывать нажатия.

Спасибо. 

Автор: Raid 6.7.2008, 23:16
Подправьте, если ошибусь.
Ты контрол кидаешь на форму и теперь он обрабатывает нажатия. у формы поставь KeyPreview в true, вроде должно помочь

Автор: dimas_sceen 6.7.2008, 23:56
Цитата(Raid @  6.7.2008,  23:16 Найти цитируемый пост)
Ты контрол кидаешь на форму и теперь он обрабатывает нажатия. у формы поставь KeyPreview в true, вроде должно помочь 

Нет, не помогло.

Автор: nikitao 7.7.2008, 11:22
Какие ты события хочешь ловить ?

В любом случае их начинает ловить уже контрол , а не форма , так что пересылай их форме.

Автор: dimas_sceen 7.7.2008, 11:38
Цитата(nikitao @  7.7.2008,  11:22 Найти цитируемый пост)
Какие ты события хочешь ловить ?

KeyDown

Как их переслать форме?

Автор: nikitao 7.7.2008, 11:49
Просто к обработчикам формы и контрола подсоедини одни и те же ф-ции. И не важно будет кто у тебя событие будет ловить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)