Winforms - проблема с текстовым полем cue banner в выпадающем элементе - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь (по причинам) использовать текстовое поле cue banner вместо стандартного текстового поля в выпадающем списке WinForms.

Я получил его в состоянии, когда я могу добавить новый объект управления в список выпадающих опций, но если я это сделаю, он блокирует меню свойств не только для него, но и для любых других опций на том же самом выпадающий список'. У него нет этой проблемы, если я использую его в другом месте формы - только когда он используется в раскрывающемся списке.

Я публикую два кода ниже:

  1. Мой класс CueTextBox (расширение TextBox)
  2. Мой класс ToolStripCueTextBox (производный от ToolStripControlHost для доступности дизайнера)

    **//1 - Class for box**
    public class CueTextBox : TextBox
    {
        private string mCue;
        public string Cue
        {
            get => mCue;
            set
            {
                mCue = value;
                Invalidate();
            }
        }
    
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
    
            const int WM_PAINT = 0xF;
            if (m.Msg == WM_PAINT)
            {
                if (!Focused && string.IsNullOrEmpty(Text) && !string.IsNullOrEmpty(Cue))
                {
                    using (var graphics = CreateGraphics())
                    {
                        TextRenderer.DrawText(
                            dc: graphics,
                            text: Cue,
                            font: Font,
                            bounds: ClientRectangle,
                            foreColor: SystemColors.GrayText,
                            backColor: Enabled ? BackColor : SystemColors.Control,
                            flags: TextFormatFlags.Top | TextFormatFlags.Left);
                    }
                }
            }
        } 
    
    **//2 - Class for toolstrip**
    [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
    public class ToolStripCueTextBoxItem : ToolStripControlHost
    {
        public ToolStripCueTextBoxItem() : base(new CueTextBox())
        {
        }
    }
    

Я новичок здесь, но любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...