@
@LE}{@NDER
Проблема заключается в следующем:
Есть форма, которая реагирует на нажатия клавиш. Все бы хорошо, да вот, когда добавляю кнопку на форму, форма перестает реагировать на нажатия клавиш. Комментирую кнопку, все нормально. Кто-нибудь сталкивался с подобным? В чем проблема-то собственно? Ставил брейк поинты - прога вообще не реагирует на событие нажатия клавиш.
Код инициализации формы:
[codebox]
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = global::MegaSnake.Properties.Resources.Background2;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.CloseBtn);
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
this.ResumeLayout(false);
[/codebox]
Код инициализации кнопки
[codebox]
private System.Windows.Forms.Button CloseBtn;
this.CloseBtn = new System.Windows.Forms.Button();
//
// CloseBtn
//
this.CloseBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CloseBtn.BackColor = System.Drawing.Color.Transparent;
this.CloseBtn.FlatAppearance.BorderSize = 0;
this.CloseBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.CloseBtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Indigo;
this.CloseBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CloseBtn.Image = global::MegaSnake.Properties.Resources.CloseBtn;
this.CloseBtn.Location = new System.Drawing.Point(240, 7);
this.CloseBtn.Name = "CloseBtn";
this.CloseBtn.Size = new System.Drawing.Size(45, 45);
this.CloseBtn.TabIndex = 1;
this.CloseBtn.UseVisualStyleBackColor = true;
this.CloseBtn.Click += new System.EventHandler(this.CloseBtn_Click);
[/codebox]
Ну и обработчик нажатия на клавиши:
[codebox]
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
direction = Directions.West;
break;
case Keys.Down:
direction = Directions.East;
break;
case Keys.Left:
direction = Directions.South;
break;
case Keys.Right:
direction = Directions.North;
break;
case Keys.Escape:
this.Close();
break;
}
}
[/codebox]
Есть форма, которая реагирует на нажатия клавиш. Все бы хорошо, да вот, когда добавляю кнопку на форму, форма перестает реагировать на нажатия клавиш. Комментирую кнопку, все нормально. Кто-нибудь сталкивался с подобным? В чем проблема-то собственно? Ставил брейк поинты - прога вообще не реагирует на событие нажатия клавиш.
Код инициализации формы:
[codebox]
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = global::MegaSnake.Properties.Resources.Background2;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.CloseBtn);
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
this.ResumeLayout(false);
[/codebox]
Код инициализации кнопки
[codebox]
private System.Windows.Forms.Button CloseBtn;
this.CloseBtn = new System.Windows.Forms.Button();
//
// CloseBtn
//
this.CloseBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.CloseBtn.BackColor = System.Drawing.Color.Transparent;
this.CloseBtn.FlatAppearance.BorderSize = 0;
this.CloseBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.CloseBtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Indigo;
this.CloseBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.CloseBtn.Image = global::MegaSnake.Properties.Resources.CloseBtn;
this.CloseBtn.Location = new System.Drawing.Point(240, 7);
this.CloseBtn.Name = "CloseBtn";
this.CloseBtn.Size = new System.Drawing.Size(45, 45);
this.CloseBtn.TabIndex = 1;
this.CloseBtn.UseVisualStyleBackColor = true;
this.CloseBtn.Click += new System.EventHandler(this.CloseBtn_Click);
[/codebox]
Ну и обработчик нажатия на клавиши:
[codebox]
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
direction = Directions.West;
break;
case Keys.Down:
direction = Directions.East;
break;
case Keys.Left:
direction = Directions.South;
break;
case Keys.Right:
direction = Directions.North;
break;
case Keys.Escape:
this.Close();
break;
}
}
[/codebox]