none
Элементы на панели не получают фокус RRS feed

  • Общие обсуждения

  • Разместил на форме:
    Label
    2 элемента WebBrowser
    Panel в которую добавил еще 2 WebBrowser
    написал:

    Код C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     
            private void Form2_Load(object sender, EventArgs e)
            {
                webBrowser1.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser2.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser3.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser4.GotFocus += new EventHandler(WebBrowser_GotFocus);
            }
            private void WebBrowser_GotFocus(Object sender, EventArgs e)
            {
                label1.Text = (sender as Control).Name;
            }
     
    Кликаю по браузерам на форме - имена отображаются.
    Кликаю по браузерам на панели - не отображаются.
    Как лечить?

    Разместил TableLayoutPanel с двумя колонками и двумя строчками.
    В первую колонку поместил 2 RadioButton, а во вторую 2 webBrowser.
    написал:
    Код C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     
            private void Form2_Load(object sender, EventArgs e)
            {
                webBrowser1.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser2.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser3.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser4.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser5.GotFocus += new EventHandler(WebBrowser_GotFocus);
                webBrowser6.GotFocus += new EventHandler(WebBrowser_GotFocus);
                panel1.GotFocus += new EventHandler(WebBrowser_GotFocus);
                radioButton1.GotFocus += new EventHandler(WebBrowser_GotFocus);
                radioButton2.GotFocus += new EventHandler(WebBrowser_GotFocus);
                tableLayoutPanel1.GotFocus += new EventHandler(WebBrowser_GotFocus);
            }
            private void WebBrowser_GotFocus(Object sender, EventArgs e)
            {
                label1.Text = (sender as Control).Name;
            }
     
    Кликаю по переключателю в первой строке - отображается его имя.
    Кликаю по браузеру в первой строке - не отображается его имя.
    Нажимаю Tab - отображается имя браузера первой строки.
    Жму дальше - ничего.
    Теперь по клику браузера первой строки начинает отображаться его имя.
    Кликаю по переключателю второй строки - отображается его имя.
    далее все как с первой строкой.

    Кто подскажет, как обеспечить получение фокуса контролом на панели по клику на нем?
    И почему поведение именно такое?
    • Изменен тип I.Vorontsov 12 июля 2010 г. 7:34
    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:47 MSDN Forums consolidation (От:Visual C#)
    27 июня 2010 г. 13:04

Все ответы

  • Что-то мне подсказывает, что события на браузерах и не должны маршалиться в ваше приложение. Браузер это ведь не такой контрол как "кнопка". Вот - кажется нашел решение вашей проблемы.
    - Dmitri Nesteruk
    28 июня 2010 г. 8:13
  • Однако когда браузер лежит просто на форме, то он нормально получает фокус.

    А когда на панели или в групбоксе, то не получает.

    Начинает получать если выполнить

    webBrowser3.Select();
    webBrowser4.Select();
    

    Но хочется понять причину такого поведения и узнать нормальные способы решения.

    Читал, что элементы на панели по умолчанию не получают фокус, но можно выставить свойство Focusable в true

    Но это все для WPF.

    В WinForms я такого свойства не нашел.

    За ссылку спасибо.

    28 июня 2010 г. 12:51
  • Если задать url то webbrowser начинает получать фокус

    Александр Кобелев : Мой блог
    28 июня 2010 г. 13:24
  • дело в том, что в браузеры у меня грузятся текст и картинки из базы

    и даже html файл не создается.

    28 июня 2010 г. 14:03
  • Уважаемый пользователь!

     

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме.


    Для связи [Mail]