Не могу получить доступ к свойствам и событиям моего пользовательского элемента управления, унаследованного от ToolStripControlHost в конструкторе
Я пытаюсь создать пользовательский элемент ContextMenu, который состоит из просто FlowLayoutPanel, содержащего метку и ComboBox. Я хочу иметь возможность доступа к свойствам и событиям моего пользовательского элемента управления во время разработки в конструкторе Visual Studio 2013. Я хочу иметь возможность использовать свой пользовательский элемент управления в MenuStrip, в ToolStripMenuItem или в ContextMenu. Моя настоящая проблема заключается в том, что все работает нормально, если я вставляю элемент управления непосредственно в MenuStrip, но я не могу получить доступ к окну свойств своего элемента управления, когда оно находится в ToolStripMenuItem или в ContextMenu. Окно свойств полностью белое, а в конструкторе элемент управления сбой.
Итак, вот мой код (я еще не реализовал ни свойств, ни каких-либо событий, но я все равно должен иметь доступ к унаследованным свойствам и событиям в окне свойств. Фактически, я делаю, когда вставляю элемент управления в MenuStrip, но не в другой два.)
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace CustomControlLib
{
[ToolStripItemDesignerAvailabilityAttribute(ToolStripItemDesignerAvailability.MenuStrip | ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.ContextMenuStrip)]
public class LblCboxStripControl : ToolStripControlHost
{
private Label controlName;
private ComboBox controlComboBox;
private FlowLayoutPanel controlPanel;
public LblCboxStripControl()
: base(CreateControlInstance())
{
controlPanel = (FlowLayoutPanel)base.Control;
controlPanel.AutoSize = true;
controlPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink;
controlPanel.BackColor = Color.Transparent;
controlName = new Label();
controlName.BackColor = Color.Transparent;
controlName.AutoSize = true;
controlName.Dock = DockStyle.None;
controlName.Text = "Control name";
controlComboBox = new ComboBox();
controlPanel.Controls.Add(controlName);
controlPanel.Controls.Add(controlComboBox);
}
public static FlowLayoutPanel CreateControlInstance()
{
FlowLayoutPanel flp = new FlowLayoutPanel();
return flp;
}
}
}
Я видел похожий пост здесь: .NET Custom Control (ToolStripControlHost) наносит ущерб дизайнера
но единственное решение - создать класс, который наследует форму ToolStripControlHost и предоставляет конструктор без аргументов, вообще не решает мою проблему. Я также пытался создать новые пустые проекты, перезапустить VS и поместить класс в проект формы или в библиотеку extern, но это тоже не решило проблему. Я бы также добавил, что в файле Form.designer нет ничего необычного.