Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 12.06.2009
Сообщений: 60

Динамическое создание элементов CheckBox и Label

19.11.2013, 09:59. Показов 5597. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравсвуйте помогите пожалуйста
задача такая динамически создоем элемент CheckBox и на его собитие CheckedChanged создается Label при вкдючений CheckBox Label должен появлятся на форму, а при выключений исчезать, вроде все правильно но в чем проблема не понятно
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
namespace WindowsFormsApplication21
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CheckBox checkbox1 = new CheckBox();
            checkbox1.Name = "checkbox1";
            checkbox1.Text = "checkbox1";
            Controls.Add(checkbox1);
            checkbox1.CheckedChanged+=new EventHandler(checkbox1_CheckedChanged);
        }
        void checkbox1_CheckedChanged(object sender, EventArgs e)
        {
          CheckBox c1=sender as CheckBox;
          Label l1 = new Label();
          l1.Name = "label";
          l1.Text = "label";
          l1.Location = new Point(50, 50);
          if (c1.Checked == true)
          {
             
              
              l1.Visible = true;
              Controls.Add(l1);
         }
            if (c1.Checked ==false)
            {
               
               
                l1.Visible = false; //не работает
                Controls.Remove(l1); //не работает
               // Controls.Clear(); //работает
            }
            
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2013, 09:59
Ответы с готовыми решениями:

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

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

Динамическое создание Label
Здравствуйте. Мне нужно динамически создать лейб. написал код, но в форме ничего нет. Подскажите в чем тут проблема. public void...

8
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.11.2013, 10:17
Так попробуй
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void checkbox1_CheckedChanged(object sender, EventArgs e)
        {
          CheckBox c1=sender as CheckBox;
         
          if (c1.Checked)
          {
              Label l1 = new Label();
              l1.Name = "label";
              l1.Text = "label";
              l1.Location = new Point(50, 50);              
              l1.Visible = true;
              Controls.Add(l1);
         }
         else
              this.Controls.RemoveByKey("label");
            
        }
1
0 / 0 / 1
Регистрация: 12.06.2009
Сообщений: 60
19.11.2013, 10:32  [ТС]
спасибо сработала, можете ли обяснить почему мой вариант не работал?
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.11.2013, 10:35
Потому что ты создавал новую метку всегда, но добавлял её только если флажок был отмечен. Т.е. если флажок был не отмечен, то метка создавалась, на форму не добавлялась, а ты пытался её удалить
1
0 / 0 / 1
Регистрация: 12.06.2009
Сообщений: 60
19.11.2013, 11:03  [ТС]
попробовала так но форма куда-то исчезает
void checkbox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox c1=sender as CheckBox;
Label l1 = new Label();
l1.Name = "label";
l1.Text = "label";
l1.Location = new Point(50, 50);
//l1.Visible = true;
Controls.Add(l1);
if (c1.Checked)
{
l1.Visible = true;
}
else
// this.Controls.RemoveByKey("label");
Visible = false;

}

Добавлено через 15 минут
попробовала так, но форма куда-то исчезает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void checkbox1_CheckedChanged(object sender, EventArgs e)
{
 CheckBox c1=sender as CheckBox;
  Label l1 = new Label();
  l1.Name = "label";
  l1.Text = "label";
  l1.Location = new Point(50, 50);
  //l1.Visible = true;
  Controls.Add(l1);
  if (c1.Checked)
   {
   l1.Visible = true;
   }
   else
   // this.Controls.RemoveByKey("label");
   Visible = false;
}
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.11.2013, 11:13
Послушай, я дал рабочий вариант. Что не устраивает? Есть два пути решения:
  1. Создать один раз метку и затем либо скрывать либо показывать её по клику на флажке
  2. Каждый раз при клике на флажке создавать метку, если флажок отмечен и удалять, если флажок снят
Я дал вариант номер 2.
То, что ты пишешь не имеет смысла. Метку, если ты решила её создавать при клике на флажке, нужно создавать только если флажок отмечен (как в моём варианте). А ты её создаёшь всегда, не добавляя на форму. Только работы сборщику мусора прибавляешь.
Форма исчезает из-за строки
C#
1
Visible = false;
потому что обращение к свойству без указания объекта подразумевает объект того класса, к свойству которого обращаются. В данном случае это форма.
Строки
C#
1
2
Visible = false;
this.Visible = false;
идентичны.
1
0 / 0 / 1
Регистрация: 12.06.2009
Сообщений: 60
19.11.2013, 11:38  [ТС]
утрайвает конечно, спосибо, просто хотела узнать все нюансы вот и все
0
19.11.2013, 12:45

Не по теме:

ViterAlex, а что так грубо? Некоторые сюда приходят не только получить рабочий вариант, но и для того, что бы им растолковали где их код не верный, а если они еще и пытаются сами довести его до ума то в двойне хорошо. Бывают случаи когда просто задачу скинут, без пояснений и сиди разбирай то ли кто-то как заметками форумом пользуется или все-таки помочь надо.

2
19.11.2013, 12:49

Не по теме:

Где ты увидел грубость? Может, немного резковато. Виноват, это эмоции: дал человеку рабочий код, а она продолжает городить что-то своё. Тут скорее по-дружески рассердился. Если кого-то задел, прошу прощения

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2013, 12:49
Помогаю со студенческими работами здесь

Динамическое создание Label
Нужно создать программу, которая будет добавлять на форму метки с текстом. Местоположение и размеры меток определяются в программе...

Динамическое создание Label?
При таком раскладе все равно не отображается текст Label'а на форме. Почему перед типом Form отсутствует значок &, а у Label...

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

Динамическое создание Label
вызываю функцию CreateLabels(new { 17, 17 }, new { 13, 78 }, new { "Поиск по фамилии", "Поиск по классу" }); сама функция ...

Динамическое создание Label
Нужно чтоб по нажатию кнопки мыши в том мести появлялась надпись пункт1, пункт2 и т.д. Думаю надпись выводить через Label. Ну только как...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru