Solved

Convert a string to a method call

Posted on 2009-04-13
2
342 Views
Last Modified: 2013-12-17
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
Comment
Question by:ukalyan
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 6

Accepted Solution

by:
Cebik earned 250 total points
ID: 24133454
0
 
LVL 23

Assisted Solution

by:Tony McCreath
Tony McCreath earned 250 total points
ID: 24136387
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

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …

632 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question