[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 346
  • Last Modified:

Convert a string to a method call

I have a form application with a "drop down list" and  "Select button".
There are 3 functions
void foo1()
{
 ...
}

void foo2()
{
...
}
void foo3()
{
...
}

Is it possible to:
1) Convert method names to string so that these strings can be added to "drop down list" as "foo1", "foo2", "foo3"
2) Once a value is selected in the drop down, is it possible to change the selected string to method call:
    i.e. "foo1" as foo1()
          "foo2" as foo2()
         "foo3" as foo3()

My basic understanding of C# says, it is not possible. But I want to find from experts, if there is a way to do this.

Thanks,
0
ukalyan
Asked:
ukalyan
2 Solutions
 
CebikCommented:
0
 
Tony McCreathTechnical SEO ConsultantCommented:
Here's a more structured way to do it using delegates.

Delegates are a way to reference methods and call them later
/// <summary>
/// Define the signature of the methods that can be placed in the combo. e.g.
/// void fooX()
/// </summary>
public delegate void DropDownMethod();
 
/// <summary>
/// A class to be used as items in the combo box
/// </summary>
public class DropDownMethodItem
{
	public DropDownMethodItem(string name, DropDownMethod method)
	{
		Name = name;
		Method = method;
	}
 
	/// <summary>
	/// Display text
	/// </summary>
	public string Name;
 
	/// <summary>
	/// A deligate pointing to the method this item will call
	/// </summary>
	public DropDownMethod Method;
 
	/// <summary>
	/// This controls the display text
	/// </summary>
	/// <returns></returns>
	public override string ToString()
	{
		return Name;
	}
}
 
#region methods to call 
public void foo1()
{
	MessageBox.Show("foo1 called");
}
 
public void foo2()
{
	MessageBox.Show("foo2 called");
}
 
public void foo3()
{
	MessageBox.Show("foo3 called");
}
#endregion
 
/// <summary>
/// Polulates the combo box with each method. In my case I click a button to populate
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonPopulate_Click(object sender, EventArgs e)
{
	comboBox1.Items.Add(new DropDownMethodItem("foo1", new DropDownMethod(foo1)));
	comboBox1.Items.Add(new DropDownMethodItem("foo2", new DropDownMethod(foo2)));
	comboBox1.Items.Add(new DropDownMethodItem("foo3", new DropDownMethod(foo3)));
}
 
/// <summary>
/// Call the selected method when its item is selected
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
	((DropDownMethodItem)comboBox1.SelectedItem).Method();
}

Open in new window

0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now