Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52

Определить тип элемента управления

27.09.2012, 15:17. Показов 5944. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, исправить ошибку :
C#
1
2
3
4
5
6
7
8
9
10
11
12
             Rectangle r;
            foreach (Control control in this.Controls)
            {
                r.Size = control.Size;
                r.Location = control.Location;
                if (control.GetType == Label) //"Label" является "тип", но используется как "переменная"
                {
                    rectList.Add(r);
                }
                else
                    statList.Add(r);
            }
не знаю как по-другому узнать Lable это или нет...

Добавлено через 22 минуты
и вообще тут "System.NullReferenceException"....

Добавлено через 1 минуту
может есть другой вариант, как это сделать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2012, 15:17
Ответы с готовыми решениями:

В чем отличия пользовательского элемента управления от настраиваемого элемента управления?
В чем отличия пользовательского элемента управления от настраиваемого элемента управления в контексте Windows Forms?

Как определить возвращаемое значение для пользовательского элемента управления?
Создаю пользовательский элемент управления. На поле UserControl1 перетаскиваю элемент TextBox, для которого задается возможность вводить...

Элементы управления, созданные в одном потоке, не могут быть родительскими для элемента управления в другом потоке
Привет :) Есть задача - нужно динамически добавлять компоненты. Все работает хорошо. Но если добавлять через цикл то начинает зависать...

12
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 16:12
Цитата Сообщение от knesinka Посмотреть сообщение
не знаю как по-другому узнать Lable это или нет
делай так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
             Rectangle r;
            foreach (Control control in this.Controls)
            {
                r.Size = control.Size;
                r.Location = control.Location;
                Label lb = control as Label;
                if (lb != null) 
                {
                    rectList.Add(r);
                }
                else
                    statList.Add(r);
            }
1
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 16:13  [ТС]
if (control is Label) -- исправила! но NullReference никуда не делся
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 16:15
knesinka, внимательнее, я показывал пример с as
0
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 16:20  [ТС]
C#
1
2
3
4
5
6
7
8
9
            foreach (Control control in this.Controls)
            {
                if (control is Label)
                {
                    rectList.Add(control.DisplayRectangle);
                }
                else
                    statList.Add(control.DisplayRectangle);
            }
вот так сейчас это выглядит.

Добавлено через 37 секунд
попробую и с as

Добавлено через 2 минуты
не помогло(( NullReference после запуска не от этого вообще видимо
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 16:30
knesinka, покажи код, и на какой строке выпадает ошибка
0
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 16:34  [ТС]
она после запуска выпадает:

Первый этап обработки исключения типа "System.NullReferenceException" в приложении WFApp.exe
Поток 0xfb8 завершился с кодом 0 (0x0).
Программа "[5196] WFApp.vshost.exe: Управляемый код" завершилась с кодом -1073741819 (0xc0000005).

Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static List<Rectangle> rectList;
        public static List<Rectangle> statList;
        public Form1()
        {
            InitializeComponent();
            foreach (Control control in this.Controls)
            {
                if (control is Label)
                {
                    rectList.Add(control.DisplayRectangle);
                }
                else
                    statList.Add(control.DisplayRectangle);
            }
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 16:45
knesinka, пройди отладчиком и посмотри, на какой строке выскакивает исключение. И попробуй код, который я давал
0
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 16:51  [ТС]
nio, уже пробовала код, который давали. ошибка когда не lable и делаем statList.Add(control.DisplayRectangle);

может у этого контрола нет DisplayRectangle? потому что он сам не null. но тогда бы работало с Rectangle r.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 17:16
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение



knesinka, ты не инициализировала сами коллекции
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static List<Rectangle> rectList;
        public static List<Rectangle> statList;
        public Form1()
        {
            InitializeComponent();
            rectList = new List<Rectangle>();
            statList = new List<Rectangle>();
            foreach (Control control in this.Controls)
            {
                if (control is Label)
                {
                    rectList.Add(control.DisplayRectangle);
                }
                else
                    statList.Add(control.DisplayRectangle);
            }
1
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 17:26  [ТС]
nio, теперь инициализировала... не помогло(((
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.09.2012, 17:31
Цитата Сообщение от knesinka Посмотреть сообщение
не помогло
код я проверял, у меня работает без проблем
1
0 / 0 / 0
Регистрация: 25.05.2012
Сообщений: 52
27.09.2012, 17:36  [ТС]
nio, Даа! Ета ошибка исчезла!) Спасибо!) ет я уже просто ещё одну коллекцию непроинициализированную добавила!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2012, 17:36
Помогаю со студенческими работами здесь

РГР по Теории автоматического управления: определить тип звена.
Привет. это какой тип звена? дифференцирующее? а это какой:

Определить ID элемента управления в функции обработки
Доброе утро! Для двух элементов управления(кнопок) задана одна функция обработки. Задача: найти ID элемента управления(кнопки) по...

Определить координаты элемента управления (CEdit) относительно диалогового окна
Подскажите пожалуйста как в mfc проекте определить координаты элемента управления (CEdit) относительно диалогового окна?

Как определить тип элемента в ArrayList?
Есть класс абстрактный животные, от него наследуются 2 класса хищники и травоядные, от этих классов наследуются классы, волк, олень, заяц,...

Определить: Оптимальный вариант(тип) недостающего элемента
Уважаемые, может быть кто-нибудь сталкивался вот с таким вот чудом: Не прошу решить задачу, прошу хотя бы объяснить, что от меня...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru