Visual studio button нажатие

Обновлено: 07.07.2024

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

заместо button_1 нужно сделать например button_2,button_3 и т.д. кнопок очень много.

60 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков Все кнопки можно подписывать на один и тот же обработчик события. В обработчик приходить параметром sender , приводите его к типу Button и либо по названию, либо по тегу вы сможете определить от какой кнопки пришло событие. а по тегу это как ? Вот например я нажатую кнопку пихаю в массив кнопок,наращиваю значение флага,и так по очереди,и проверяю последнюю с предпоследним (ничего не выходит), потом при попытке оттуда достать и что-либо сделать но пишет System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." ?

К примеру у нас есть такой код, который добавляет на нашу форму 10 кнопок:

Как мы можем узнать кнопку? Для этого нужен какой либо идентификатор, возьмем к примеру имя, пусть оно будет btn . Добавим после строки button.Top = top; еще одну строку button.Name = "btn" + i; .

Далее, как нам отследить нажатие? Для этого нужно подписаться на событие. Стандартный вариант - Click - событие, которое происходит при клике мышью по объекту. Для всех наших кнопок достаточно всего одного обработчика событий! Давайте добавим еще одну строку в свойство кнопки - button.Click += ButtonOnClick; .

Хорошо, с генерацией покончили, теперь наш код выглядит так:

Но! Мы не добавили то, что будет выполнятся при нажатие на кнопку, давайте напишем:

Хорошо, ошибок нет, должно все работать. Но, нужно ведь наделить каким то функционалом наши кнопки. Давайте в ButtonOnClick добавим определение нажатой кнопки и ее удаление:

Давайте по порядку:

Чтож, вроде все разложил "по полочкам" как мог, с этой частью думаю трудностей не возникнет. Удачи!

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

Создадим где нибудь приватный объект Button , который будет хранить информацию о последней нажатой кнопке:

Далее, к примеру, при нажатие 2 раза на кнопку, сделаем так, что бы она удалялась. Для этого перепишем наше событие ButtonOnClick :

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

Представляет элемент управления "кнопка Windows".

Примеры

Следующий пример кода создает Button , присваивает его DialogResult свойству значение DialogResult.OK и добавляет его в Form .

Комментарии

ButtonМожно щелкнуть мышью, ввести клавишу или пробел, если кнопка имеет фокус.

Установите AcceptButton свойство или CancelButton объекта, Form чтобы разрешить пользователям нажать кнопку, нажав клавиши Enter или ESC, даже если кнопка не имеет фокуса. Это дает форме поведение диалогового окна.

При отображении формы с помощью ShowDialog метода можно использовать DialogResult свойство кнопки, чтобы указать возвращаемое значение ShowDialog .

Можно изменить внешний вид кнопки. Например, чтобы сделать его плоским для веб-поиска, задайте FlatStyle для свойства значение FlatStyle.Flat . FlatStyleСвойству также можно присвоить значение FlatStyle.Popup , которое отображается плоским до тех пор, пока указатель мыши не найдет над кнопкой; затем кнопка принимает стандартный вид кнопки Windows.

Если элемент управления, имеющий фокус, принимает и обрабатывает нажатие клавиши ВВОД, то не Button обрабатывает его. Например, если фокус имеет многострочную TextBox или другую кнопку, то этот элемент управления обрабатывает нажатие клавиши ВВОД вместо кнопки Accept (принять).

Конструкторы

Инициализирует новый экземпляр класса Button.

Свойства

Получает объект AccessibleObject, назначенный элементу управления.

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

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

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

Возвращает или задает доступную роль элемента управления.

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

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

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

Возвращает или задает местоположение, в котором выполняется прокрутка этого элемента управления в ScrollControlIntoView(Control).

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

Возвращает или задает режим, с помощью которого Button может автоматически изменять свои размеры.

Возвращает или задает цвет фона элемента управления.

Возвращает или задает фоновое изображение, отображаемое на элементе управления.

Возвращает или задает макет фонового изображения в соответствии с перечислением ImageLayout.

Возвращает или задает значение BindingContext для элемента управления.

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

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

Получает значение, указывающее, можно ли для свойства ImeMode установить активное значение с целью включения поддержки IME.

Возвращает значение, указывающее, может ли элемент управления получать фокус.

Определяет, могут ли вызываться события в элементе управления.

Возвращает значение, указывающее, доступен ли элемент управления для выбора.

Возвращает или задает значение, указывающее, была ли мышь захвачена элементом управления.

Возвращает или задает значение, указывающее, вызывает ли элемент управления выполнение проверки для всех элементов управления, требующих проверки, при получении фокуса.

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

Возвращает или задает высоту и ширину клиентской области элемента управления.

Возвращает название организации или имя создателя приложения, содержащего элемент управления.

Возвращает объект IContainer, который содержит коллекцию Component.

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

Возвращает или задает контекстное меню, связанное с элементом управления.

Возвращает или задает объект ContextMenuStrip, сопоставленный с этим элементом управления.

Возвращает коллекцию элементов управления, содержащихся в элементе управления.

Возвращает значение, указывающее, был ли создан элемент управления.

Возвращает базовый класс CreateParams при создании окна.

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

Возвращает привязки данных для элемента управления.

Возвращает или задает курсор по умолчанию для элемента управления.

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

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

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

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

Возвращает внутренние промежутки в содержимом элемента управления в пикселях.

Получает размер элемента управления по умолчанию.

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

Получает значение DPI для устройства, на котором сейчас отображается элемент управления.

Возвращает или задает значение, возвращаемое в родительскую форму при нажатии кнопки.

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

Получает значение, указывающее, находится ли базовый класс Control в процессе удаления.

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

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

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

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

Возвращает внешний вид границ и цвета, используемые для отображения состояния флажка и состояния мыши.

Возвращает или задает плоский внешний вид для кнопки.

Возвращает значение, указывающее, имеется ли на элементе управления фокус ввода.

Возвращает или задает шрифт текста, отображаемого элементом управления.

Возвращает или задает высоту шрифта элемента управления.

Возвращает или задает цвет элемента управления.

Возвращает дескриптор окна, с которым связан элемент управления.

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

Возвращает или задает высоту элемента управления.

Возвращает или задает изображение, отображаемое на кнопке.

Возвращает или задает способ выравнивания изображения на кнопке.

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

Получает или задает средство доступа к ключу для изображения в свойстве ImageList.

Получает или задает свойство ImageList, содержащее изображение Image, отображенное в кнопке.

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

Получает или задает режим IME элемента управления.

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

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

Указывает, является ли один из предков этого элемента управления узлом и этим сайтом в Десигнмоде. Это свойство доступно только для чтения.

Возвращает или задает значение, указывающее, является ли этот элемент управления кнопкой по умолчанию.

Возвращает значение, указывающее, был ли удален элемент управления.

Возвращает значение, указывающее, имеется ли у элемента управления связанный с ним дескриптор.

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

Получает кэшированный экземпляр механизма размещения элемента управления.

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

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

Возвращает или задает расстояние между элементами управления.

Возвращает или задает размер, являющийся верхней границей, которую может указать метод GetPreferredSize(Size).

Возвращает или задает размер, являющийся нижней границей, которую может указать метод GetPreferredSize(Size).

Возвращает или задает имя элемента управления.

Возвращает или задает заполнение в элементе управления.

Возвращает или задает родительский контейнер элемента управления.

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

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

Возвращает версию сборки, содержащую элемент управления.

Возвращает значение, указывающее, осуществляет ли в настоящий момент элемент управления повторное создание дескриптора.

Возвращает или задает область окна, связанную с элементом управления.

Это свойство устарело.

Возвращает или задает значение, указывающее, перерисовывается ли элемент управления при изменении размеров.

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

Возвращает или задает значение, указывающее, выровнены ли компоненты элемента управления для поддержки языков, использующих шрифты с написанием справа налево.

Получает значение, определяющее масштабирование дочерних элементов управления.

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

Возвращает значение, указывающее, имеет ли пользовательский интерфейс соответствующее состояние, при котором отображаются или скрываются сочетания клавиш.

Возвращает или задает местонахождение элемента управления.

Возвращает или задает высоту и ширину элемента управления.

Возвращает или задает последовательность перехода по клавише TAB между элементами управления внутри контейнера.

Возвращает или задает значение, указывающее, может ли пользователь перевести фокус на данный элемент управления при помощи клавиши TAB.

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

Возвращает или задает текст, связанный с этим элементом управления.

Возвращает или задает способ выравнивания текста на кнопке.

Возвращает или задает расположение текста и изображения относительно друг друга.

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

Получает родительский элемент управления, не имеющий другого родительского элемента управления Windows Forms. Как правило, им является внешний объект Form, в котором содержится элемент управления.

возвращает или задает значение, определяющее, следует ли использовать Graphics класс (GDI+) или TextRenderer класс (GDI) для отрисовки текста.

Возвращает или задает значение, указывающее, должен ли первый символ, следующий за знаком амперсанда (&), использоваться как назначенная клавиша элемента управления.

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

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

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

Возвращает или задает ширину элемента управления.

Данное свойство не применимо к этому классу.

Методы

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

Уведомляет клиентские приложения со специальными возможностями об указанном перечислении AccessibleEvents для указанного дочернего элемента управления.

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

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

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

Помещает элемент управления в начало z-порядка.

Возвращает значение, указывающее, является ли указанный элемент управления дочерним элементом.

Создает для элемента управления новый объект с поддержкой специальных возможностей.

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

Создает новый экземпляр коллекции элементов управления для данного элемента управления.

Создает объект Graphics для элемента управления.

Создает дескриптор для элемента управления.

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

Удаляет дескриптор, связанный с элементом управления.

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом ButtonBase, а при необходимости освобождает также управляемые ресурсы.

Начинает операцию перетаскивания.

Поддерживает отрисовку в указанном точечном рисунке.

Получает возвращаемое значение асинхронной операции, представленное переданным объектом IAsyncResult.

Определяет, равен ли указанный объект текущему объекту.

Возвращает форму, в которой находится элемент управления.

Устанавливает фокус ввода на элемент управления.

Получает указанный объект AccessibleObject.

Получает значение, указывающее, как будет вести себя элемент управления, когда его свойство AutoSize включено.

Возвращает дочерний элемент управления, имеющий указанные координаты.

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

Возвращает следующий объект ContainerControl в цепочке родительских элементов управления данного элемента.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает следующий или предыдущий элемент среди дочерних элементов управления в последовательности клавиши TAB.

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

Возвращает границы, внутри которых масштабируется элемент управления.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает значение указанного бита стиля элемента управления для данного элемента управления.

Определяет, находится ли элемент управления на верхнем уровне.

Возвращает объект Type для текущего экземпляра.

Скрывает элемент управления от пользователя.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

Вызывается после добавления элемента управления в другой контейнер.

Делает недействительной всю поверхность элемента управления и вызывает его перерисовку.

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

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

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

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

Вызывает событие GotFocus для указанного элемента управления.

Вызывает событие LostFocus для указанного элемента управления.

Вызывает событие Click для указанного элемента управления.

Вызывает событие Paint для указанного элемента управления.

Вызывает событие PaintBackground для указанного элемента управления.

Определяет, является ли символ входным символом, который распознается элементом управления.

Определяет, является ли заданная клавиша обычной клавишей ввода или специальной клавишей, нуждающейся в предварительной обработке.

Преобразует логическое значение DPI в эквивалентное значение DPI DeviceUnit.

Преобразует размер из логических единиц в единицы устройства путем его масштабирования к текущему DPI и округлением вниз до ближайшего целого значения ширины и высоты.

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

Уведомляет класс Button, является ли он кнопкой по умолчанию, чтобы соответствующим образом настроить его внешний вид.

Вызывает событие Invalidated, чтобы сделать недействительной указанную область элемента управления.

Всем привет, пытаюсь тут кое-что простенькое сделать и встал перед проблемой:

Есть кнопка button1 и лейбл label1
При нажатии на кнопку лейбл должен принимать значение Tes, я понимаю, что я делаю что-то не так, но что именно?

Простой 9 комментариев

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

FoggyFinder

HemulGM

Убедитесь, что обработка события выполняется. Добавьте ShowMessage для проверки, если не умеете ещё пользоваться отладкой. Андрей Власов, Спасибо, понял в чём была проблема, ну почти
Я просто забивал код, но потом попробовал в конструкторе кликнуть на саму кнопку дважды и она сама записалась в код

Данил, Если хотите вручную добавлять обработчики для кнопок на форме, то нужно в коде дизайнера формы (Form1.Designer.cs) добавить метод обработчика на событие "Click" вашей кнопки, например:

При двойном нажатии на кнопку в конструкторе данный код создается автоматически вместе с методом "button1_Click".

mindtester

Foggy Finder, Андрей Власов, пишите ответы. тостер ориентирован на то что бы как можно больше вопросов были отмечены решенными

FoggyFinder

FoggyFinder

FoggyFinder

В WinForms проектах конструктор форм прячет детали пользовательского интерфейса в файл Form1.Designer.cs (вместо Form1 будет название конкретного класса). Поэтому при копировании из других проектов или примеров нужно не забывать перенести также все подписки.

Чтобы проверить их наличие (или отсутствие), в конструкторе форм выделите элемент и перейдите к просмотру его свойств (Properties).

По умолчанию откроется вкладка свойств контрола. Для просмотра информации о событиях нужно перейти на следующую за ней (с нарисованной молнией):

5db6e64c1bdca244908136.jpg

В списке находите требуемый элемент. Если справа ничего не присвоено, значит дело в отсутствующей подписке. Через выпадающий список (ComboBox) выбираете обработчик из доступных:

5db6e7036cb33351827234.jpg

Запускаете, проверяете.
Если все работает, значит проблема найдена правильно.

Для подписки не обязательно использовать конструктор форм, можно создавать их самостоятельно, например, в конструкторе форм:

Но лучше придерживаться одного стиля, так и код будет проще восприниматься и лишних подписок не будет.

Всем привет, пытаюсь тут кое-что простенькое сделать и встал перед проблемой:

Есть кнопка button1 и лейбл label1
При нажатии на кнопку лейбл должен принимать значение Tes, я понимаю, что я делаю что-то не так, но что именно?

Простой 9 комментариев

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

FoggyFinder

HemulGM

Убедитесь, что обработка события выполняется. Добавьте ShowMessage для проверки, если не умеете ещё пользоваться отладкой. Андрей Власов, Спасибо, понял в чём была проблема, ну почти
Я просто забивал код, но потом попробовал в конструкторе кликнуть на саму кнопку дважды и она сама записалась в код

Данил, Если хотите вручную добавлять обработчики для кнопок на форме, то нужно в коде дизайнера формы (Form1.Designer.cs) добавить метод обработчика на событие "Click" вашей кнопки, например:

При двойном нажатии на кнопку в конструкторе данный код создается автоматически вместе с методом "button1_Click".

mindtester

Foggy Finder, Андрей Власов, пишите ответы. тостер ориентирован на то что бы как можно больше вопросов были отмечены решенными

FoggyFinder

FoggyFinder

FoggyFinder

В WinForms проектах конструктор форм прячет детали пользовательского интерфейса в файл Form1.Designer.cs (вместо Form1 будет название конкретного класса). Поэтому при копировании из других проектов или примеров нужно не забывать перенести также все подписки.

Чтобы проверить их наличие (или отсутствие), в конструкторе форм выделите элемент и перейдите к просмотру его свойств (Properties).

По умолчанию откроется вкладка свойств контрола. Для просмотра информации о событиях нужно перейти на следующую за ней (с нарисованной молнией):

5db6e64c1bdca244908136.jpg

В списке находите требуемый элемент. Если справа ничего не присвоено, значит дело в отсутствующей подписке. Через выпадающий список (ComboBox) выбираете обработчик из доступных:

5db6e7036cb33351827234.jpg

Запускаете, проверяете.
Если все работает, значит проблема найдена правильно.

Для подписки не обязательно использовать конструктор форм, можно создавать их самостоятельно, например, в конструкторе форм:

Но лучше придерживаться одного стиля, так и код будет проще восприниматься и лишних подписок не будет.

Читайте также: