2013-03-14 3 views
-1

У меня есть несколько кнопок в моем приложении Windows, у которого есть мнемоники. Теперь, если я нажимаю несколько клавиш, события нажатия кнопки срабатывают, поскольку я использовал мнемонику. Но поведение не так, как ожидалось, потому что обработчик события второй кнопки запускается до того, как обработчик события первой кнопки завершил свое выполнение, а также я написал свой код таким образом, чтобы в обработчике событий первой кнопки я отключился моя вторая кнопка, по-прежнему выполняется второй обработчик событий кнопки. Проблема здесь объясняется мнемониками. Я предлагаю мне лучший способ обработки мнемоники как можно скорее. Спасибо заранее.C# .NET Мнемоника неожиданное поведение

+1

Пожалуйста, дайте нам некоторые код для работы, поэтому нам не придется делать какие-то дикие догадки. – staafl

+0

Привет, если возможно, вы можете предложить мне лучший способ или любой COM-компонент для обработки мнемоники, я нашел один из них - это интерфейс IKeyBoardinputsink, но он присутствует в .NET. framework 3.0, и я использую .netframework 2.0, если возможно, любезно предложите мне какое-либо решение или любую ссылку, которая предоставит мне интерфейс для обработки этого –

+0

. Нет ничего изначально неправильного с внедрением мнемоники .NET, и проблема почти завершена в вашей логике приложений. – staafl

ответ

0

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

В качестве альтернативы вы можете просто отключить кнопки при запуске и повторно включить затем when.finished.

+0

Привет, я не могу изменить код ... но если возможно, вы можете предложить мне лучший способ или любой COM-компонент для обработки мнемоники, я нашел один из них - это интерфейс IKeyBoardinputsink, но он присутствует в .NET framework 3.0, и я использую .netframework 2.0, если возможно любезно предложите мне любое обходное решение или любую ссылку, которая предоставит мне интерфейс для обработки этого. –

+0

Компонент COM? – CodeCaster

+0

Интерфейс IKeyBoardinputsink - это интерфейс, присутствующий в пространстве имен System.Windows.Interop .... но в .NET framework 2.0 этого реферирования нет –