Простой вопрос C #, я надеюсь! Добавить дополнительные свойства для кнопок - PullRequest
3 голосов
/ 27 октября 2010

Привет в форме окна (не WPF). Я динамически создаю кнопки на потоке, и я хотел бы добавить к ним некоторые свойства, чтобы просто хранить другие значения (int и string) с кнопками для последующего использования.1002 *

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

Можно ли это сделать?

Ответы [ 6 ]

8 голосов
/ 27 октября 2010

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

3 голосов
/ 27 октября 2010

Да.Подобные данные можно назначить свойству Button.Tag (унаследовано от Control).Это свойство имеет тип object, поэтому вы можете присвоить ему все, что захотите.

Альтернативно, вы можете наследовать от Button.

2 голосов
/ 27 октября 2010

Вывод из кнопки:

public class MyButton : Button
{
  public string ExtraProperty {get;set;}
}

Лично я считаю, что это плохой код.Действительно плохой код.

1 голос
/ 27 октября 2010

Как и все элементы управления WinForms, Button также имеет свойство Tag, которое можно использовать для хранения произвольных объектов.

public struct MyButtonData {
    public int myInt;
    public string myString;
}

...

bn.Tag = new MyButtonData() {myInt = 3, myString = "Hello World"};

...

var data = (MyButtonData)bn.Tag;
0 голосов
/ 26 июля 2017

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

Источник: Microsoft - Devloper Network. https://msdn.microsoft.com/en-us/library/ff723977(v=expression.40).aspx

0 голосов
/ 27 октября 2010

Вы можете либо:

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

Для этой цели было разработано свойство Tag .

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