Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320

Подскажите как построить условие

28.11.2011, 22:41. Показов 1026. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как мне построить условие, ну типо я немогу получить доступ к элементу

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public void ВыборПО(bool kill)
        {
            //добавить панель 
            //изменить ее цвет на СontrolDark
            //и на ней распологаються 2 ком. label
 
 
            if (kill == true)
            {
                Label Label1 = new Label();
                Label1.Text = "Каталог программ";
                Label1.Location = new Point(9, 5);
                Label1.Size = new Size(125, 14);
                this.Controls.Add(Label1);
 
                Label Label2 = new Label();
                Label2.Text = "Для продолжения установки, один из доступных продуктов и нажмите кнопку *Далее*";
                Label2.Location = new Point(9, 23);
                Label2.Size = new Size(447, 32);
                this.Controls.Add(Label2);
 
                DataGrid grid1 = new DataGrid();
                grid1.Location = new Point(9, 101);
                grid1.Size = new Size(474, 181);
                //добавить колонки [Программа, Размер, Версия, Популярность]
                //выбор целой строки
                //убрать колонку слева
                this.Controls.Add(grid1);
            }
            else
            {
            // сдесь я хотел прописать код для уничтожения но некак? чета не пойму.
            label1.free;:wall:   
 
 
            }
 
 
 
        }
Добавлено через 1 минуту
Цитата Сообщение от n971030 Посмотреть сообщение
Подскажите как мне построить условие, ну типо я немогу получить доступ к элементу

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                this.Controls.Add(grid1);
            }
            else
            {
            // сдесь я хотел прописать код для уничтожения но некак? чета не пойму.
            label1.free;:wall:   
 
 
            }
 
 
 
        }
я здесь пытался уничтожить элементы но немогу обратиться к созданому обьекту!!! помогите
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2011, 22:41
Ответы с готовыми решениями:

подскажите пожалуйста как изменить условие
надо изменить условие, что-бы вместо одного ряда звездочек было два. помогите пожалуйста, один ряд смог сделать, два понят не могу как ...

Подскажите, как построить матрицу по правилу
Для каждого элемента, если j=i+1 или j=i-1 элемент равен 5. В остальных случаях -1. А элемент =0. n-это порядок матрицы.

Подскажите как записать условие
В матрице А(n*n) найти Сред.Арифметическое элементов последнего столбца и возвести полученное значение в квадрат. Нужно только условие с...

12
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
28.11.2011, 22:46
В .NET Вам, судя по всему, метод Dispose() нужен...

А к чему Вы собираетесь получить доступ, если Ваш Label создаётся только если kill == true?
При следующем входе в функцию ВыборПО, до созданной Label можно будет достучаться только через this.Controls...
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.11.2011, 22:48  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
В .NET Вам, судя по всему, метод Dispose() нужен...

А к чему Вы собираетесь получить доступ, если Ваш Label создаётся только если kill == true?
При следующем входе в функцию ВыборПО, до созданной Label можно будет достучаться только через this.Controls...
да я в этой среде недавно, есть некоторые аспекты которые пока недошли. А подскажите примерчиком пожалуйста...
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
28.11.2011, 22:58
При условии kill == true Вы делаете следующее:
Цитата Сообщение от n971030 Посмотреть сообщение
Label Label1 = new Label();
Объявленный и проинициализированный объект Label будет доступен только в рамках конструкции if.
Чтобы достучаться до Label, который Вы добавили в this.Controls, к нему же и надо обращаться.
Т.е., допустим, что при kill == true нам надо добавлять Label в коллекцию элементов (при условии, что там уже нет такого объекта), а при kill == false убирать из коллекции, опять же, при условии, что в коллекции есть нужный нам Label.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void Sample(bool kill)
        {
            if (!kill)
            {
                if (!this.Controls.OfType<Label>().Any(lbl => lbl.Name == "MyLabel"))
                    this.Controls.Add(new Label() { Name = "MyLabel", Text = "Моя панелька", Visible = true });
            }
            else
            {
                if (this.Controls.OfType<Label>().Any(lbl => lbl.Name == "MyLabel"))
                    this.Controls["MyLabel"].Dispose();
            }
        }
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.11.2011, 23:03  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
При условии kill == true Вы делаете следующее:
}
}[/CSHARP]
код для меня помоему еще непонятен, а нельзя попроще - ну без лишнего, типо как получить доступ к контролу. this я так понял это типо pointer в delphi ?
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
28.11.2011, 23:14
Из MSDN:
Ключевое слово this ссылается на текущий экземпляр класса, а также используется в качестве модификатора первого параметра метода расширения.
Про вторую часть предложения забываем пока, соответственно это текущий экземпляр класса. В нашем случае это та форма, на которой происходит действие.
Доступ к контролу можно получить по ссылке или по имени. Когда контрол добавлен в коллекцию Controls, представляющую из себя коллекцию всех элементов управления, расположенных на форме, перебором можно найти нужный контрол.
Если объявить Label глобально (вынести за пределы метода), то ссылка на него будет доступна в любой момент, пока где-либо используется. Если же с объектом никто/ничто работать не будет, сборщик мусора избавится от неё в конечном счёте.
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
29.11.2011, 00:14  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
Из MSDN:

.
Я вобщем теоретически понял, но практически не работает написал код и заключил его try - catch име
он стал выдовать собщение "Ссылка на обьект не указывает на экземпляр обьекта" или я слишком много опустил кода который должен быть?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 private void Приветствие(bool Kill)
        {
            if (Kill == true)
            {
                Label Labels1 = new Label();
                Labels1.Size = new Size(294, 37);
                Labels1.Location = new Point(170, 9);
                Labels1.Text = "Вас приветствует программа установки Install Sheld";
                Labels1.AutoSize = false;
                Labels1.Font = new Font(Labels1.Font, Labels1.Font.Style | FontStyle.Bold);
                this.Controls.Add(Labels1);
 
                Label Labels2 = new Label();
                Labels2.Size = new Size(340, 50);
                Labels2.Location = new Point(170, 80); //170 59
                Labels2.Text = "Универсальный клиент установки поможет вам установить любое програмное обеспечение моей собственной разработки";
                Labels2.AutoSize = false;
                this.Controls.Add(Labels2);
 
                Label LabelMsg = new Label();
                LabelMsg.Location = new Point(170, 137);
                LabelMsg.Size = new Size(37, 13);
                LabelMsg.Text = "Язык:";
                this.Controls.Add(LabelMsg);
 
                //комбенированый список
                ComboBox ComboBoxLanguages = new ComboBox();
                ComboBoxLanguages.FlatStyle = FlatStyle.Flat;
                //ComboBoxLanguages.Items.Add("ff");
                ComboBoxLanguages.Location = new Point(217, 134);
                ComboBoxLanguages.Size = new Size(193, 21);
                //ComboBoxLanguages.BackColor= new Color(GrayText)// GrayText;
                //заполнить список языками
                this.Controls.Add(ComboBoxLanguages);
 
                Label Labels3 = new Label();
                Labels3.Size = new Size(250, 13);
                Labels3.Location = new Point(174, 251);
                Labels3.Text = "Для продолжения нажмите кнопку *Далее>*";
                Labels3.AutoSize = false;
                this.Controls.Add(Labels3);
            }
            else
                if (Kill == false)
                {
                    try
                    {
 
                        this.Controls["Labels1"].Dispose();
                        this.Controls["Labels2"].Dispose();
                        this.Controls["LabelMsg"].Dispose();
                        this.Controls["ComboBoxLanguages"].Dispose();
                        this.Controls["Labels3"].Dispose();
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.Message);
                    }
                }
        }
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
29.11.2011, 00:25
Брр, давайте с другой стороны, в чём состоит задача? Уничтожить объект?
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
29.11.2011, 00:36  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
Брр, давайте с другой стороны, в чём состоит задача? Уничтожить объект?
Этап1 - я пишу для себя клиент который будет все мои программы устанавливать с фтп сервера. Все компоненты создаються и уничтожаються динамически. т.е вы наверно видели как программы устанавливаються. Так вот это типо тоже самое только под себя подгоняю. Вобщем сначало на форме создаеться интерфейс я его назвал *приветствие* т.е для него создались все компоненты динамически а также обработка событий для кнопок.

далее когда пользователь счелкает на кнопке *Далее>* все компоненты коорые создались (за исключением кнопок!!!) они должны юыть уничтожены.

Этап2 - выполняеться процедура "Выбор ПО" на текущей форме должны распологаться компоненты которые позволяют пользователю выбрать одну из моих программ для установки, т.е для этой формы уже создаються другие компоненты с другими параметрами!!! ну а старае которые пренадлежали *приветствие* должны уже отсутствовать.

Добавлено через 19 секунд
я могу выложить еще и сам проект

Добавлено через 23 секунды
но мне ненужно чтоб за меня все написали я сам хочу научиться
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
29.11.2011, 00:50
Хозяин барин, конечно, только кнопку "Назад" я, например, люблю Так что заморачиваться с уничтожением я бы лично не стал.

Цитата Сообщение от n971030 Посмотреть сообщение
но мне ненужно чтоб за меня все написали я сам хочу научиться
и это очень похвально

Что касается уничтожения...
Ну, можете создать List<Control>, например, глобальный, куда будете складывать все те элементы, что создаёте на том или ином "фрейме", а когда они уже вам будут не нужны, просто поднимите Dispose на каждом из них и очистите список.
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
29.11.2011, 00:56  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
.
Ну если клиент получиться выложу сюда в тему сам проект - это не тайна.
А вот почему собственно обьект не уничтожился? его там нет или я неправильно на него указываю

при таком коде:

C#
1
this.Controls["Labels3"].Dispose();
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
29.11.2011, 01:16
Имя переменной не означает, что свойство Name, которое и является тем самым ключом, по которому индексер Controls ищет объекты, будут совпадать. Свойство Name для Label надо задавать вручную.
C#
1
2
Label lbl = new Label();
lbl.Name = "MyLabel1";
C#
1
2
if (this.Controls.ContainsKey("MyLabel1"))
    this.Controls["MyLabel1"].Dispose();
Предварительная проверка на существование ключа позволит не использовать конструкцию try ... catch, которая довольно сильно тормозит работу программы.
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
29.11.2011, 01:21  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
Имя .
БОЛЬШОЕ СПАСИБО! ПОМОГЛО
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2011, 01:21
Помогаю со студенческими работами здесь

как можно построить условие что если...
как можно построить условие что если форма (допустим)доход открыта то выполнять токоето действие если закрыто то другое

Подскажите пожалуйста как лучше реализовать условие
Подскажите пожалуйста как лучше реализовать условие: в edit1 IP-адрес если этот ip и диапазона 192.168.1.1-192.168.1.255 тогда в...

Подскажите пожалуйста, как показать div, через условие if?
Подскажите пожалуйста, как показать div , через условие if ? Блок div должен быть скрыт по дефолту. &lt;div &gt; текст ...

Подскажите пожалуйста как на Делфи написать условие на определенном диапазоне?
У меня задача такая если на DBEdit1 ввести число в диапазоне 1...99 то на DBEdit2 ввелось надпись типа Str. пробовал так: var...

Объясните условие этого задания ( и подскажите, как лучше реализовать это на C++ )


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru