Как остановить настраиваемые элементы управления toolstrip в C# с фокусировкой?

У меня есть два пользовательских элемента управления полосы инструментов, чтобы дать мне NumericUpDown и TrackBar. Они используются для контроля и отображения размеров кисти в приложении для рисования. Тем не мение. Когда пользователь щелкает любой из них, фокус на окне рисования, которое является дочерним окном MDI, теряется. Я бы подумал, что элемент управления toolstrip родительской формы не будет фокусироваться на ребенке? Это верно для стандартных элементов управления полосы инструментов (кнопка, метка и т. Д.).

Вот код для обоих элементов управления:

NumericUpDown

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;

[
    ToolStripItemDesignerAvailability
        (ToolStripItemDesignerAvailability.ToolStrip |         ToolStripItemDesignerAvailability.StatusStrip)
]

public class ToolStripNumericUpDownItem : ToolStripControlHost
{
    public NumericUpDown numericUpDown;

    public ToolStripNumericUpDownItem()
        : base(new NumericUpDown())
    {
        numericUpDown = (NumericUpDown)this.Control;
        numericUpDown.AutoSize = false;
        numericUpDown.Maximum = 1000;
        numericUpDown.Size = new Size(30, 20);
    }
}

TrackBar

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Design;

[
ToolStripItemDesignerAvailability
    (ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.StatusStrip)
]

public class ToolStripTrackBarItem : ToolStripControlHost
{
    public TrackBar trackBar;

    public ToolStripTrackBarItem()
        : base(new TrackBar())
    {
        trackBar = (TrackBar)this.Control;
        trackBar.AutoSize = false;
        trackBar.Maximum = 100;
        trackBar.Size = new Size(200, 20);
        trackBar.TickFrequency = 1;
        trackBar.TickStyle = TickStyle.None;
    }
}

0 ответов

Другие вопросы по тегам