Google adsense

Search

Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Wednesday, March 2, 2011

C#: Evaluate C# Code (Eval Function)

It is function to give you a lot of chance such as convert string to object.

// Eval > Evaluates C# sourcelanguage

public static object Eval(string sCSCode) {

CSharpCodeProvider c = new CSharpCodeProvider();
ICodeCompiler icc = c.CreateCompiler();
CompilerParameters cp = new CompilerParameters();

cp.ReferencedAssemblies.Add("system.dll");
cp.ReferencedAssemblies.Add("system.xml.dll");
cp.ReferencedAssemblies.Add("system.data.dll");
cp.ReferencedAssemblies.Add("system.windows.forms.dll");
cp.ReferencedAssemblies.Add("system.drawing.dll");

cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;

StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n" );
sb.Append("using System.Xml;\n");
sb.Append("using System.Data;\n");
sb.Append("using System.Data.SqlClient;\n");
sb.Append("using System.Windows.Forms;\n");
sb.Append("using System.Drawing;\n");

sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return "+sCSCode+"; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");

CompilerResults cr = icc.CompileAssemblyFromSource(cp, sb.ToString());
if( cr.Errors.Count > 0 ){
MessageBox.Show("ERROR: " + cr.Errors[0].ErrorText,
"Error evaluating cs code", MessageBoxButtons.OK,
MessageBoxIcon.Error );
return null;
}

System.Reflection.Assembly a = cr.CompiledAssembly;
object o = a.CreateInstance("CSCodeEvaler.CSCodeEvaler");

Type t = o.GetType();
MethodInfo mi = t.GetMethod("EvalCode");

object s = mi.Invoke(o, null);
return s;

}

Thanks,
Info source: http://www.codeproject.com/KB/cs/evalcscode.aspx

Monday, September 20, 2010

C#: Forms relationship

Calling a form method from another form. You can solved it, using the Window.Owner property. But only top-level controls can have an owner.

Нэг формоос нөгөө формын функцийг дуудах. Нэг формоос өөр формыг дуудахдаа ShowDialog функц ашигласанаар хоёр форм хоорондоо харилцаа холбоотой болдог. Харин Show функээр дуудвал хоёр форм хоорондоо холбоогүй дуудагддаг. Show функцээр дуудсан үед тухайн хоёр формын холбоог Window.Owner property -г хэрэглэн үүсгэж болно.

Example:

//Form1 coding

private void button1_Click(object sender, EventArgs e)
{
this.label1.Text = "Hello World!";
}

public void updateForm()
{
button1_Click(this.button1, null);
}

private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
//f2.frmTemp = this;
f2.Show();
}

//Form2 coding
//public Form frmTemp;

private void button1_Click(object sender, EventArgs e)
{
(this.Owner as Form1).updateForm();
//(this.frmTemp as Form1).updateForm();
}

Thanks,
Info source: http://msdn.microsoft.com/en-us/library/system.windows.window.owner.aspx