Установить contextmenustrip элемента управления richtextbox в mdi child от parent

1

Я хочу назначить конкретный контекстный контекст 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'

Теги:
richtextbox
contextmenustrip

1 ответ

1
Лучший ответ

Как вы узнали, строка не является ContextMenuStrip. Поскольку ContextMenuStrips являются частными для ChildForm, вы должны просто передать флаг, чтобы сообщить форме, в которой оно должно использоваться:

public Form1(bool useOtherMenu)
{
  InitializeComponent();
  if (useOtherMenu)
  {
    richTextBox1.ContextMenuStrip = contextMenuStrip2;
  }
}

Затем, чтобы назвать это:

Form childForm = new Form1(true);
childForm.MdiParent = this;
childForm.Show();
  • 0
    Здравствуйте, спасибо, это работает. Я создал инструкцию switch для отображения строк <=> contextmenustrip объектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню