Это так странно, но я нашел обходной путь в том, что установка кнопки поиска более чем на 20%. Затем она будет хорошо работать в IE, как и в Chrome. Я предполагаю, что, возможно, поведение IE при отображении страницы немного отличается от chrome.
#search-button {
display: inline-block;
width: 20%;
}
Класс Panel был разработан как контейнер, он избегает выделения фокуса, поэтому дочерний элемент управления всегда будет его получать. Чтобы это исправить, вам понадобится операция. Я добавил код для получения нажатий клавиш курсора и в событии KeyDown:
using System;
using System.Drawing;
using System.Windows.Forms;
class SelectablePanel : Panel {
public SelectablePanel() {
this.SetStyle(ControlStyles.Selectable, true);
this.TabStop = true;
}
protected override void OnMouseDown(MouseEventArgs e) {
this.Focus();
base.OnMouseDown(e);
}
protected override bool IsInputKey(Keys keyData) {
if (keyData == Keys.Up || keyData == Keys.Down) return true;
if (keyData == Keys.Left || keyData == Keys.Right) return true;
return base.IsInputKey(keyData);
}
protected override void OnEnter(EventArgs e) {
this.Invalidate();
base.OnEnter(e);
}
protected override void OnLeave(EventArgs e) {
this.Invalidate();
base.OnLeave(e);
}
protected override void OnPaint(PaintEventArgs pe) {
base.OnPaint(pe);
if (this.Focused) {
var rc = this.ClientRectangle;
rc.Inflate(-2, -2);
ControlPaint.DrawFocusRectangle(pe.Graphics, rc);
}
}
}
фокус вызова в событии щелчка
private void Panel_Click(object sender, EventArgs e)
{
Panel.Focus();
}