Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
diska
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 17
#1

Проход по всем элементам MenuStrip и NullReferenceException was unhandled - Visual Basic .NET

09.06.2014, 11:07. Просмотров 709. Ответов 4
Метки нет (Все метки)

Добрый день!
Сразу скажу, что в программировании я неселен.
Для облегчения своей работы потребовалось написать небольшенькую программку,в ходе чего появились некоторые вопросы.
1. Как пройтись по элементам MenuStrip? Элементы сгруппированы в "Файл", "Правка", "Настройки" и тд (стандартно). Мне необходимо пройтись по элементам каждой группы, определить имя и тип элемента чтобы назначить обработчик на группу элементов.
2. Возможно ли в ctype передать имя типа данных через переменную? Если да, можно примерчик?
3. Возможно ли вызывать функцию используя переменную в имени функции? Пример: обработка_данных.способ_1(), обработка_данных.способ_2() и тд., где номер способа это переменная.
4. Создано 4 кнопки с именами but1, but2,but3, but4 расположены на форме, задается обработчик события при загрузке формы
vb.net
1
2
3
For q as integer=1 to 4
   AddHandler Ctype(Controls("But" & q), Button).Click, New EventHandler(AddressOf qwerty)
next q
Функция qwerty просто показывает сообщение с типом и именем контрола.
При размещении данных кнопок на панеле (Panel) во время запуска программы на строке где AddHandler появляется сообщение: "NullReferenceexception was unhandled". Подскажите почему так происходит?
Зарание спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2014, 11:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проход по всем элементам MenuStrip и NullReferenceException was unhandled (Visual Basic .NET):

Ошибка An unhandled exception of type 'System.NullReferenceException'
Здраствуйте.Я перехожу с VB на VB.NET и делаю только первые шаги. У меня...

Как обратиться ко всем элементам определенного типа на форме?
Допустим на форме 10 кнопок. Можно обратится ко всем сразу? Допустим поменять...

Как пройти по всем элементам MenuStrip?
Добрый вечер. Пытаюсь пройти по всем элементам меню. После 4х часов проб и...

Проход по всем элементам некоторого типа объектов, расположенных на форме
Приветствую. Есть серия кнопок TSpeedButton на форме. Возможно-ли пройти...

[tasm] Как сделать проход по всем элементам ниже побочной диагонали матрицы
Добрый день(вечер). Использую тасм. Возникла небольшая проблема при написании...

NullReferenceException was unhandled
При отладке выскакивает такая вот кака. using System; using...

4
tezaurismosis
Администратор
Эксперт .NET
8261 / 3766 / 721
Регистрация: 17.04.2012
Сообщений: 8,443
Записей в блоге: 14
09.06.2014, 14:28 #2
1)
vb.net
1
2
3
4
5
6
7
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For Each menu As ToolStripItem In MenuStrip1.Items
            MessageBox.Show(menu.Text)
        Next
    End Sub
End Class
3) Такое можно лишь через рефлексию и наверняка вы откажетесь от такого способа, когда увидите код
Можно сделать так
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Class Form1
    Public Sub DataProcessing(op As OperationType)
        Select Case op
            Case OperationType.Method1
                ' ***
            Case OperationType.Method2
                ' ***
            Case OperationType.Method3
                ' ***
            Case Else
                ' если ни один из них не подходит
        End Select
    End Sub
End Class
 
Public Enum OperationType
    Method1
    Method2
    Method3
End Enum
4) Один из элементов выражения равен Null. Воспользуйтесь отладчиком и найдёте.
0
diska
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 17
09.06.2014, 18:11  [ТС] #3
По первому пункту. Я также пытался, но показывает только "Файл", "Правка", "Настройки" и тд. (т.е. те которые видимые элементы), а вложенные в них никак. А мне именно они нужны и по группам (группа "Файл", группа "Правка" и тд.)
По третьему. Я хотел чтобы исходя из названия подпункта меню вызывалась одноименная функция.
По четвертому пункту. Когда на форме кнопки, то они работают, а когда я их тупо перетаскиваю на панель и запускаю программу то появляется то сообщение.

Добавлено через 25 минут
Разобрался с первым пунктом. Может кому потребуется:
vb.net
1
2
3
4
5
6
For Each menu As ToolStripMenuItem In MenuStrip1.Items
      MessageBox.Show(menu.Name) ' имена видимых элементов
      For Each qwe As ToolStripMenuItem In menu.DropDownItems
          MsgBox(qwe.Name) ' имена элементов подменю
      Next
Next
0
tezaurismosis
Администратор
Эксперт .NET
8261 / 3766 / 721
Регистрация: 17.04.2012
Сообщений: 8,443
Записей в блоге: 14
09.06.2014, 18:21 #4
diska, а почему не хотите расставить обработчик на каждое меню через конструктор форм?
Два клика по меню - и вы уже в обработчике.
0
diska
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 17
09.06.2014, 18:47  [ТС] #5
Я хочу чтобы программа была псевдомногооконная. Каждое окно это панель оформленная определенным образом (она может перемещать внутри рабочего пространства основного окна, сворачивается и разворачивается) (отсюда 4 пункт). Пункты меню мне только для вызова данных панелей и добавления некоторых обработчиков связанных с действиями над панелями, а так как имена панелей и элементов меню связаны все можно пропустить через одни обработчики. Надеюсь понятно объяснил.
0
09.06.2014, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2014, 18:47
Привет! Вот еще темы с решениями:

Формирование Combobox по DataGridView - ошибка NullReferenceException was unhandled
Здравствуйте. Суть проблемы в следующем. Имеется DataGridView, в который...

An unhandled exception of type 'System.NullReferenceException' occurred
Почему такое вылазит при простейшем коде? Что я делаю не так? string PAs =...

Ошибка An unhandled exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication1.exe
Есть квадратная матрица размера M, числа в которой можно ограничить в диапазон...

Проход по элементам списка
определить функцию ДОБАВЬ прибавляющую к элементам списка заданное число. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru