Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
diska
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 11
#1

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

09.06.2014, 11:07. Просмотров 678. Ответов 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' - Visual Basic .NET
Здраствуйте.Я перехожу с VB на VB.NET и делаю только первые шаги. У меня возникла проблема при обращении с Form2 к объектам Form1. Т.е я...

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

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

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

NullReferenceException was unhandled - C#
При отладке выскакивает такая вот кака. using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Формирование Combobox по DataGridView - ошибка NullReferenceException was unhandled - C#
Здравствуйте. Суть проблемы в следующем. Имеется DataGridView, в который через DataTable загружается содержимое XML-файла, в...

4
tezaurismosis
Администратор
Эксперт .NET
6949 / 3290 / 501
Регистрация: 17.04.2012
Сообщений: 8,050
Записей в блоге: 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
Сообщений: 11
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
6949 / 3290 / 501
Регистрация: 17.04.2012
Сообщений: 8,050
Записей в блоге: 14
09.06.2014, 18:21 #4
diska, а почему не хотите расставить обработчик на каждое меню через конструктор форм?
Два клика по меню - и вы уже в обработчике.
0
diska
0 / 0 / 0
Регистрация: 09.06.2014
Сообщений: 11
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
Привет! Вот еще темы с ответами:

An unhandled exception of type 'System.NullReferenceException' occurred - C#
Почему такое вылазит при простейшем коде? Что я делаю не так? string PAs = null; for (int a = 1; a != 10; a++) PAs = "XXX";

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

mpl проход по элементам - C++
Пытался написать вывод элементов vector_c не через for_each. Не вышло. Кто подскажет как сие сделать наиболее удобно? Пример вектора. ...

Проход по элементам массива - Java
Всем доброго времени суток! У меня сложилась такая вот дилемма. String qu= {"Что тут?", "А тут?"}; for(int i=0; i <...


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

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

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