Я пытаюсь (по причинам) использовать текстовое поле cue banner вместо стандартного текстового поля в выпадающем списке WinForms.
Я получил его в состоянии, когда я могу добавить новый объект управления в список выпадающих опций, но если я это сделаю, он блокирует меню свойств не только для него, но и для любых других опций на том же самом выпадающий список'. У него нет этой проблемы, если я использую его в другом месте формы - только когда он используется в раскрывающемся списке.
Я публикую два кода ниже:
- Мой класс CueTextBox (расширение TextBox)
Мой класс 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())
{
}
}
Я новичок здесь, но любая помощь будет принята с благодарностью!