Как получить значение из записи хеш-таблицы - PullRequest
0 голосов
/ 28 октября 2011

Я поместил все свои элементы управления формой в хеш-таблицу таким образом: -

 foreach (Control c in this.Controls)
        {
            myhash.Add(c.Name, c);

        }

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

Ответы [ 4 ]

3 голосов
/ 28 октября 2011
foreach (Control c in hashtable.Values)
{
    if(c is RadioButton)
    {
        string name = x.Name;
        bool isChecked = (c as RadioButton).Checked;
    }
}

или если вы знаете имя

(hashtable["name"] as RadioButton).Checked;
2 голосов
/ 28 октября 2011

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

var control = hash[radioButtonControlName] as RadioButton;

В противном случае используйте LINQ OfType () и List.ForEach () :

// OfType() does check whether each item in hash.Values is of RadioButton type
// and return only matchings
hash.Values.OfType<RadioButton>()
           .ToList()
           .ForEach(rb => { bool isChecked = rb.Checked } );

ИЛИ используя цикл foreach: ( есть хороший обзор неправильного представления об использовании List.ForEach () )

var radioButtons = hash.Values.OfType<RadioButton>();

foreach(var button in radioButons)
{
    bool isChecked = rb.Checked;
}
0 голосов
/ 28 октября 2011

Предполагая, что хеш-таблица в вашем коде является экземпляром Hashtable:

Hashtable myhash= new Hashtable();
foreach (Control c in this.Controls)
{
    myhash.Add(c.Name, c);
}

Вы можете сделать это:

foreach (DictionaryEntry entry in myhash)
{
    RadioButton rb = entry.Value as RadioButton;
    if (rb != null)
        bool checked = rb.Checked;
}

Также вы можете увидеть ключ записи хеш-карты с помощью:

foreach (DictionaryEntry entry in myhash)
{
    var componentName = entry.Key;
}

Это будет соответствовать имени компонента, который вы поместили в хэш-карту (c.Name).

Надеюсь, это поможет вам.

0 голосов
/ 28 октября 2011

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

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