Parth48
asked on
How can i get the collections of controls on my current form in C#.net window application??
i want to know that How can i get the collections of controls on my current form ??
for ex.
suppose i have 12 radiobuttons on my current form then how can i get the collections for that using controlcollections command ??
i using the below code ...
ControlCollection collection = new ControlCollection(this.Fin dForm());
what can i do now ??
for ex.
suppose i have 12 radiobuttons on my current form then how can i get the collections for that using controlcollections command ??
i using the below code ...
ControlCollection collection = new ControlCollection(this.Fin
what can i do now ??
Hi,
U can get using LINQ
http://stackoverflow.com/questions/4630391/get-all-controls-of-a-specific-type
U can get using LINQ
http://stackoverflow.com/questions/4630391/get-all-controls-of-a-specific-type
The non-Linq approach:
ControlCollection collection = new ControlCollection(this);
foreach (Control c in this.Controls)
{
if (c is RadioButton)
{
collection.Add(c);
}
}
ASKER
hi @kaufmed: u r right ...
but how can i find how many radio buttons checked true ??
is there any if condition in your coding ??
but how can i find how many radio buttons checked true ??
is there any if condition in your coding ??
Hi
You can check whether radio button is checked as below.
if (c is RadioButton)
{
RadioButton tempC = c as RadioButton;
// Check whether radio button is checked.
if (tempC.Checked)
{
collection.Add(c);
}
}
You can check whether radio button is checked as below.
if (c is RadioButton)
{
RadioButton tempC = c as RadioButton;
// Check whether radio button is checked.
if (tempC.Checked)
{
collection.Add(c);
}
}
You can find all the checked radiobuttons in one query
foreach (RadioButton radio in this.Controls.OfType<Radio Button>(). Where( cb => cb.Checked == true))
{
...
}
foreach (RadioButton radio in this.Controls.OfType<Radio
{
...
}
ASKER
i can't get the radiobutton , what can i do ??
one thing is that i created radiobutton dynamically , so how can i find them ??
please refer the below code ...
//creating radio buttons
how can i find them ?
one thing is that i created radiobutton dynamically , so how can i find them ??
please refer the below code ...
//creating radio buttons
//Radio button 1
RadioButton rdbOption11a = new RadioButton();
rdbOption11a.Location = new Point(30, 65);
rdbOption11a.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold, GraphicsUnit.Point);
//rdbOption11a.Text = char.ConvertFromUtf32(97 + i).ToString();
rdbOption11a.Text = "a";
rdbOption11a.Size = new Size(40, 24);
//Radio button 2
RadioButton rdbOption12a = new RadioButton();
rdbOption12a.Location = new Point(30, 95);
rdbOption12a.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold, GraphicsUnit.Point);
//rdbOption11a.Text = char.ConvertFromUtf32(97 + i).ToString();
rdbOption12a.Text = "b";
rdbOption12a.Size = new Size(40, 24);
//Radio button 3
RadioButton rdbOption13a = new RadioButton();
rdbOption13a.Location = new Point(30, 125);
rdbOption13a.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold, GraphicsUnit.Point);
//rdbOption11a.Text = char.ConvertFromUtf32(97 + i).ToString();
rdbOption13a.Text = "c";
rdbOption13a.Size = new Size(40, 24);
//Radio button 4
RadioButton rdbOption14a = new RadioButton();
rdbOption14a.Location = new Point(30, 155);
rdbOption14a.Font = new Font("Microsoft Sans Serif", 8, FontStyle.Bold, GraphicsUnit.Point);
//rdbOption11a.Text = char.ConvertFromUtf32(97 + i).ToString();
rdbOption14a.Text = "d";
rdbOption14a.Size = new Size(40, 24);
how can i find them ?
Are the radiobuttons directly on your form or are they on a grouping-box (like a tabpage, ....)
If so, you need to use some kind of recursion
In code below, I just created a very small winapp, containing a tabpage with 2 radiobuttons (of which one was selected) and a radiobutton directly on the form.
If so, you need to use some kind of recursion
In code below, I just created a very small winapp, containing a tabpage with 2 radiobuttons (of which one was selected) and a radiobutton directly on the form.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Forms_C
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// this will give a radioButtonList.Count() of 1
var radioButtonList = this.Controls.OfType<RadioButton>().Where(cb => cb.Checked == true);
// this will give a radioButtonList.Count() of 2
var radioButtonList2 = Generic.FlattenChildren(this).OfType<RadioButton>().Where(cb => cb.Checked == true);
}
}
public static class Generic
{
public static IEnumerable<Control> FlattenChildren(this Control control)
{
var children = control.Controls.Cast<Control>();
return children.SelectMany(c => FlattenChildren(c)).Concat(children);
}
}
I think u missed adding the radio button to form control list add them
this.Controls.Add(rdbOptio n11a);
this.Controls.Add(rdbOptio
Like wise add this all radio buttons. As ur creating dynamically u need to add these controls to Control collection, then only u can retrieve it from it.
this.Controls.Add(rdbOptio n12a);
this.Controls.Add(rdbOptio n13a);
this.Controls.Add(rdbOptio n14a);
this.Controls.Add(rdbOptio
this.Controls.Add(rdbOptio
this.Controls.Add(rdbOptio
@Sudhakar-Pulivarthi - he's doing that (I saw that in another question where he asked for mimizing the code with a loop-statement)
ASKER
i add them using the below line ..
what can i do now ??
how can i find them ?
panel.Controls.Add(lblnumber);
panel.Controls.Add(lblRandomQuestion11);
tabPage.Controls.Add(panel);
what can i do now ??
how can i find them ?
ASKER
one thing is that i add all the controls to the tab control ....
See my posted code-example. Create a new class with the flattenControls-function and call that one
public static class Generic
{
public static IEnumerable<Control> FlattenChildren(this Control control)
{
var children = control.Controls.Cast<Cont rol>();
return children.SelectMany(c => FlattenChildren(c)).Concat (children) ;
}
}
public static class Generic
{
public static IEnumerable<Control> FlattenChildren(this Control control)
{
var children = control.Controls.Cast<Cont
return children.SelectMany(c => FlattenChildren(c)).Concat
}
}
ASKER
hi @Dhaest: yes u r right but how can i convert this result into string array ...
above code give checked textbox but how can i convert this result into string array ??
for ex.
string[] correopt = new string[3];
correopt = ???
how can i convert ?
var radioButtonList2 = Generic.FlattenChildren(this).OfType<RadioButton>().Where(cb => cb.Checked == true);
above code give checked textbox but how can i convert this result into string array ??
for ex.
string[] correopt = new string[3];
correopt = ???
how can i convert ?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
this.Controls.OfType<Radio
See http://www.linqhelp.com/linq-101/introduction-to-linq-interacting-with-controls-using-linq-in-c/ for more information and examples