Как дать кнопке значение c
Перейти к содержимому

Как дать кнопке значение c

  • автор:

Как дать кнопке значение c

В WPF кнопки представлены целым рядом классов, которые наследуются от базового класса ButtonBase:

Кнопки Button в WPF

Button

Элемент Button представляет обычную кнопку:

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

Чтобы связать кнопку с обработчиком события нажатия, нам надо определить в самой кнопке атрибут Click . А значением этого атрибута будет название обработчика в коде C#. А затем в самом коде C# определить этот обработчик.

Например, код xaml:

И обработчик в коде C#:

private void Button_Click(object sender, RoutedEventArgs e)

Либо можно не задавать обработчик через атрибут, а стандартным образом для C# прописать в коде: button1.Click+=Button_Click;

Кнопка имеет такие свойства как IsDefault и IsCancel , которые принимают значения true и false.

Если свойство IsDefault установлено в true, то при нажатии клавиши Enter будет вызываться обработчик нажатия этой кнопки.

Аналогично если свойство IsCancel будет установлено в true, то при нажатии на клавишу Esc будет вызываться обработчик нажатия этой кнопки.

Например, определим код xaml:

А в коде MainWindow.xaml.cs определим следующий код C#:

using System.Windows; namespace ControlsApp < public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); >private void acceptButton_Click(object sender, RoutedEventArgs e) < MessageBox.Show("Действие выполнено"); >private void escButton_Click(object sender, RoutedEventArgs e) < this.Close(); // закрытие окна >> >

Теперь при нажатии на клавишу Enter будет отображаться сообщение, а при нажатии на Esc будет происходить выход из приложения и закрытие окна.

RepeatButton

Отличительная особенность элемента RepeatButton — непрерывная генерация события Click , пока нажата кнопка. Интервал генерации события корректируется свойствами Delay и Interval .

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

ToggleButton

Представляет элементарный переключатель. Может находиться в трех состояниях — true, false и «нулевом» (неотмеченном) состоянии, а его значение представляет значение типа bool? в языке C#. Состояние можно установить или получить с помощью свойства IsChecked . Также добавляет три события — Checked (переход в отмеченное состояние), Unchecked (снятие отметки) и Intermediate (если значение равно null). Чтобы отрабатывать все три события, надо установить свойство IsThreeState=»True»

ToggleButton, как правило, сам по себе тоже редко используется, однако при этом он служит основой для создания других более функциональных элементов, таких как checkbox и radiobutton.

Кнопки

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

Кнопку на веб-странице можно создать двумя способами — с помощью тега и тега .

Рассмотрим вначале добавление кнопки через и его синтаксис.

Атрибуты кнопки перечислены в табл. 1.

Табл. 1. Атрибуты кнопок

Атрибут Описание
name Имя кнопки, предназначено для того, чтобы обработчик формы мог его идентифицировать.
value Значение кнопки и одновременно надпись на ней.

Создание кнопки показано в примере 1.

Пример 1. Добавление кнопки

HTML5 IE Cr Op Sa Fx

    Кнопка  

Пробелы в надписи на кнопке, в отличие от текста HTML, учитываются, поэтому можно ставить любое количество пробелов, которые в итоге влияют на ширину кнопки. Результат примера показан на рис. 1.

Вид кнопки

Рис. 1. Вид кнопки

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

Кнопки, созданные с помощью <button></p>
<p>» width=»372″ height=»195″ /></p><div class='code-block code-block-8' style='margin: 8px 0; clear: both;'>
<!-- 8agladky -->
<script src=

Рис. 2. Кнопки, созданные с помощью

Синтаксис создания такой кнопки следующий.

Атрибуты перечислены в табл. 1, но в отличие от кнопки атрибут value определяет только отправляемое на сервер значение, а не надпись на кнопке. Если требуется вывести на кнопке изображение, то тег добавляется внутрь , как показано в примере 2.

Пример 2. Рисунок на кнопке

HTML5 IE Cr Op Sa Fx

    Кнопка   

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

Кнопка Submit

Для отправки данных на сервер предназначена специальная кнопка Submit. Её вид ничем не отличается от обычных кнопок, но при нажатии на нее происходит выполнение серверной программы, указанной атрибутом action тега . Эта программа, называемая еще обработчиком формы, получает данные, введенные пользователем в полях формы, производит с ними необходимые манипуляции, после чего возвращает результат в виде HTML-документа. Что именно делает обработчик, зависит от автора сайта, например, подобная технология применяется при создании опросов, форумов, тестов и многих других вещей.

Синтаксис создания кнопки Submit зависит от используемого тега или .

 

Атрибуты те же, что и у рядовых кнопок (пример 3).

Пример 3. Отправка данных на сервер

HTML5 IE Cr Op Sa Fx

    Кнопка  

Атрибут name для этого типа кнопки можно не писать. Если не указать значение value , то браузер автоматически добавит текст, он различается в зависимости от браузера. Так, Firefox пишет «Отправить запрос», IE — «Подача запроса», Opera и Chrome — «Отправить». Сам текст надписи никак на функционал кнопки не влияет.

Кнопка Reset

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

Синтаксис создания указанной кнопки прост и похож на другие кнопки.

 

В примере 4 показана форма с одним текстовым полем, которое уже содержит предварительно введённый текст с помощью атрибута value тега . После изменения текста и нажатия на кнопку «Очистить», значение поля будет восстановлено и в нём снова появится надпись «Введите текст».

Пример 4. Кнопка для очистки формы

HTML5 IE Cr Op Sa Fx

Кнопка

Значение кнопки Reset никогда не пересылается на сервер. Если надпись на кнопке опустить, иными словами, не задавать атрибут value , на кнопке по умолчанию будет добавлен текст «Очистить».

Динамическое создание кнопок и работа с ними C#

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

arr[i].Click += new EventHandler(button_1); //arr это массив кнопок 

заместо button_1 нужно сделать например button_2,button_3 и т.д. кнопок очень много.
Отслеживать
Hector djan
задан 9 мар 2018 в 21:27
Hector djan Hector djan
60 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков

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

9 мар 2018 в 21:55

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

9 мар 2018 в 22:08
@Hectordjan — очень интересный рассказ. Лучше покажите код — ссылка «править» под вопросом.
– user176262
9 мар 2018 в 22:32

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

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

int top = 10; int left = 10; for (int i = 0; i

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

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

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

int top = 10; int left = 10; for (int i = 0; i

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

private void ButtonOnClick(object sender, EventArgs eventArgs)

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

var button = (Button)sender; if (button != null)

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

  • var button = (Button)sender; — Событие Click выдает нам объект sender , который содержит в себе всю информацию о том, кто послал данное событие. Мы знаем, что клик по кнопке производят объекты типа Button , значит смело можем привести sender к типу Button и записать это в переменную.
  • if (button != null) Тут мы проверяем, все ли у нас хорошо и не равна ли полученная нами кнопка Null . Кстати, в новых версиях C# языка все это можно очень грамотно упростить (а именно заменив «шапку» if и первую строку на if (sender is Button button) .
  • MessageBox.Show(«Прощай » + button.Name); — Ну, обычный вывод сообщения, нечего сверхъестественного. Единственное, подобную «компоновку» string можно очень просто сократить (опять же, новые версии языка, но знать думаю будет полезно), а именно «Прощай » + button.Name мы меняем на $»Прощай » .
  • button.Dispose(); — Здесь тоже довольно просто, говорим кнопке «пока!», а если быть точнее, то удаляем все занятые ей ресурсы (что приведет к ее удалению с формы).

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

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

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

private Button ClickedButton; 

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

if (sender is Button button) < if (ClickedButton != null) < if (ClickedButton.Name == button.Name) < button.Dispose(); >> ClickedButton = button; > 
  • if (sender is Button button) — об этом я уже писал выше (приводим sender к типу Button и если он не Null , то выполняем код внутри.
  • if (ClickedButton != null) — Проверяем, что бы наша «сохраненная» кнопка, не была пустой.
  • if (ClickedButton.Name == button.Name) — Условие, которое проверяет имена на соответствен. Если они совпадают, то выполняем код внутри.
  • .Dispose(); — Тут тоже все ясно, удаляем объект.
  • ClickedButton = button; — После всех операций, сохраняем нашу кнопку в заранее созданную переменную, для будущего использования.

Как дать кнопке значение c

Тег создает на веб-странице кнопки и по своему действию напоминает результат, получаемый с помощью тега (с атрибутом type=»button | reset | submit» ). В отличие от этого тега, предлагает расширенные возможности по созданию кнопок. Например, на подобной кнопке можно размещать любые элементы HTML, в том числе изображения. Используя стили можно определить вид кнопки путем изменения шрифта, цвета фона, размеров и других параметров.

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

Синтаксис

Атрибуты

accesskey Доступ к элементам формы с помощью горячих клавиш. autofocus Устанавливает, что кнопка получает фокус после загрузки страницы. disabled Блокирует доступ и изменение элемента. form Связывает между собой форму и кнопку. formaction Задаёт адрес, на который пересылаются данные формы при нажатии на кнопку. formenctype Способ кодирования данных формы. formmethod Указывает метод пересылки данных формы. formnovalidate Отменяет проверку формы на корректность. formtarget Открывает результат отправки формы в новом окне или фрейме. name Определяет уникальное имя кнопки. type Тип кнопки — обычная, для отправки данных формы на сервер или для очистки формы. value Значение кнопки, которое будет отправлено на сервер или прочитано с помощью скриптов.

Также для этого тега доступны универсальные атрибуты и события.

Закрывающий тег

HTML5 IE Cr Op Sa Fx

    Тег BUTTON  

Результат данного примера показан на рис. 1.

Вид кнопок в браузере Safari

Рис. 1. Вид кнопок в браузере Safari

Браузеры

Internet Explorer до версии 7.0 включительно не поддерживает атрибут value .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *