Я хочу назначить конкретный контекстный контекст richtextbox через родительский формат mdi в форме дочернего модуля mdi, но он не работает. Как я могу настроить richtextbox1 для использования contextMenuStrip2?
В дочерстве mdi есть два контекстных контекста, уже созданных под названием contextMenuStrip1 и contextMenuStrip2. Значением по умолчанию для richtextbox1 является contextMenuStrip1.
Используя следующий фрагмент кода, текстовый атрибут richTextBox1 изменяется, как и ожидалось, однако попытка изменения contextmenustrip ничего не делает. Он сохраняет отображение contextMenuStrip1, в то время как contextMenuStrip2 ожидается из-за строки childForm.Controls ["richTextBox1"]. ContextMenuStrip.Name = "contextMenuStrip2" ;.
Mdiparent.cs:
Form childForm = new Form1("contextMenuStrip2");
childForm.Show();
Form1.cs:
public Form1(String correctcontextmenu)
{
InitializeComponent();
richTextBox1.ContextMenuStrip = correctcontextmenu;
}
Список ошибок содержит:
Ошибка 1 Невозможно неявно преобразовать тип 'string' в 'System.Windows.Forms.ContextMenuStrip'
Как вы узнали, строка не является ContextMenuStrip. Поскольку ContextMenuStrips являются частными для ChildForm, вы должны просто передать флаг, чтобы сообщить форме, в которой оно должно использоваться:
public Form1(bool useOtherMenu)
{
InitializeComponent();
if (useOtherMenu)
{
richTextBox1.ContextMenuStrip = contextMenuStrip2;
}
}
Затем, чтобы назвать это:
Form childForm = new Form1(true);
childForm.MdiParent = this;
childForm.Show();