none
menuStrip - проблемы с отображением RRS feed

  • Вопрос

  • Добавляю на форму стандартный компонент menuStrip, присваиваю имена и обработчики событий нажатия для его компонентов. Компилирую, запускаю EXE-файл, кликаю на какой-либо пункт меню/(вызываю с помощью горячей клавиши) - необходимые действия выполняются, но затем меню/(пункт меню) "закрашивается" белым цветом и перечеркивается(этого не должно происходить). С этой проблемой я(и не только я) сталкиваюсь не первый раз, но до этого удавалось "обходить её окольными путями", а сейчас никак. Подскажите, что не так и как избавиться от проблемы? Может быть проблема не с программой, а с некоторыми ошибками отображения пунктов меню в Win7 Ultimate?
    • Перемещено Abolmasov Dmitry 22 апреля 2011 г. 11:48 (От:Работа в среде Visual Studio)
    16 апреля 2011 г. 12:07

Ответы

  • Этот код работает нормально.

    Попробуйте в меню Debug -> Exceptions... включить Thrown столбец для Common Language Runtime Exceptions (как предлагается здесь - WinForms and the big red 'X' of doom). Посмотрите будут ли ловится какие-либо исключения, возможно они помогут в поиске проблемы.


    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 27 апреля 2011 г. 10:49
    • Помечено в качестве ответа Abolmasov Dmitry 3 мая 2011 г. 9:29
    25 апреля 2011 г. 8:51

Все ответы

  • Так бывает, когда происходит ошибка в GDI+

    Компилирую, запускаю EXE-файл, кликаю на какой-либо пункт меню/(вызываю с помощью горячей клавиши) - необходимые действия выполняются

    Не включают ли эти действия какие-либо небезопасные взаимодействия других потоков с пользовательским интерфейсом или какое-нибудь рисование в OnPaint? Возможно еще что-то.


    Для связи [mail]
    18 апреля 2011 г. 11:34
  • Нет, ничего такого нет. Данная ошибка(закрашивание белым цветом и перечеркивание) в некоторых случаях происходит сразу после отображения формы, хотя в событиях формы Load(), Show() и т.д. вообще не прописываются никакие действия(им даже методы не назначаются). К примеру, создаю форму с помощью которой пользователь должен выбрать что ему запустить. Убираю с этой формы ControlBox, пишу метод WndProc, с помощью которого запрещаю пользователю перемещать форму. Размещаю на форме menuStrip, компилирую, запускаю и сразу же menuStrip перечеркивается... Только что с помощью практики выяснил, что данная проблема возникает только в случае запуска приложения через Visual Studio(Отладка->Начать отладку), если же откомпилировать и независимо запустить EXE-файл, то все меню отображаются корректно и "не деформируются"! Что это такое, в чем причина - VS не корректно отлаживает и контролирует приложение?
    20 апреля 2011 г. 3:16
  • Вы точно уверены, что код в WndProc верен? Он может быть причиной данной проблемы. Вы можете сделать минимальный тестовый проект и выложить его?


    Для связи [mail]
    20 апреля 2011 г. 5:07
  • Вы точно уверены, что код в WndProc верен? Он может быть причиной данной проблемы. Вы можете сделать минимальный тестовый проект и выложить его?


    Для связи [mail]

    Ниже привожу код метода WndProc, но вышеописанные проблемы возникают и при его отсутствии:

    protected override void WndProc(ref Message m)
          {
            const Int32 WM_NCLBUTTONDOWN = 161;      
              const Int32 HTCAPTION = 2;      
    
            if ((m.Msg == WM_NCLBUTTONDOWN) && (m.WParam.ToInt32() == HTCAPTION))
            {
              return;
            }
          
            base.WndProc(ref m);
          }
    
    
    Что может быть не так?

    23 апреля 2011 г. 2:35
  • Этот код работает нормально.

    Попробуйте в меню Debug -> Exceptions... включить Thrown столбец для Common Language Runtime Exceptions (как предлагается здесь - WinForms and the big red 'X' of doom). Посмотрите будут ли ловится какие-либо исключения, возможно они помогут в поиске проблемы.


    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 27 апреля 2011 г. 10:49
    • Помечено в качестве ответа Abolmasov Dmitry 3 мая 2011 г. 9:29
    25 апреля 2011 г. 8:51