Как включить / отключить элементы меню и панели инструментов «Вырезать / Копировать / Вставить» обычным способом?

У меня есть приложение Windows Forms с элементами управления, такими как текстовое поле, поле со списком, datagridview и т. Д. Эти элементы управления позволяют пользователю использовать clipboad, то есть вырезать / копировать и вставлять текст. Также возможно удалить текст (не связанный с буфером обмена).

В моем приложении есть строка меню с элементом «Редактировать», содержащим элементы «Вырезать / Копировать / Вставить / Удалить», а также панель инструментов с этими элементами. Как я могу правильно включить / отключить эти элементы в зависимости от состояния элемента управления, имеющего фокус?

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


person nruessmann    schedule 18.09.2008    source источник


Ответы (2)


Не существует универсального интерфейса или набора методов для получения информации о вырезании / копировании / вставке из элемента управления Windows Forms.

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

Информацию о буфере обмена намного проще, так как вы можете спросить синглтон буфера обмена, есть ли внутри него данные и какого они типа. Опять же, вам все равно нужно спросить целевой элемент управления, может ли он принять этот тип информации, чтобы по-прежнему нужно было выполнить дополнительную работу.

person Phil Wright    schedule 18.09.2008

Создайте массив для каждой группы включения / выключения. Добавьте элементы управления в массив (конечно, он должен быть правильного типа, например Object или Any и т. Д., В зависимости от используемого вами языка программирования). Затем, чтобы включить, отключите просто цикл по массиву и вызовите метод или функцию включения / отключения для каждого элемента управления. Опять же, в зависимости от языка вам может потребоваться отбросить назад.

person Javaxpert    schedule 18.09.2008