我已将所有表单控件放在哈希表中: -
foreach (Control c in this.Controls)
{
myhash.Add(c.Name, c);
}
其中有两个单选按钮。我想获取按钮的值,即选中或取消选中,并将它们分配给变量。我该怎么办呢。感谢所有人和任何帮助。
答案 0 :(得分:3)
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;
答案 1 :(得分:2)
您可以通过与之关联的键检索值,基本上控制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
循环:
(there is a nice overview of misconception of the List.ForEach() usage)
var radioButtons = hash.Values.OfType<RadioButton>();
foreach(var button in radioButons)
{
bool isChecked = rb.Checked;
}
答案 2 :(得分:0)
将作为单选按钮的控件转换为RadioButton Class实例,然后查看the checked property。至少那就是我在WebForms中使用类似的类多次完成这些操作。
答案 3 :(得分:0)
假设代码中的哈希表是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;
}
您还可以看到hashmap条目的键:
foreach (DictionaryEntry entry in myhash)
{
var componentName = entry.Key;
}
这将与您放在hashmap(c.Name)中的组件的名称相对应。
希望这对你有所帮助。