using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; using PaxScript.Net; namespace Hello { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button button1; private PaxScripter scripter = new PaxScripter(); public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); // // button1 // this.button1.Location = new System.Drawing.Point(48, 32); this.button1.Text = "Run script"; this.button1.Click += new System.EventHandler(this.button1_Click); // // Form1 // this.ClientSize = new System.Drawing.Size(210, 88); this.Controls.Add(this.button1); this.Text = "EventHandlingApp"; } #endregion static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { scripter.Reset(); scripter.RegisterType(typeof(Form)); scripter.RegisterType(typeof(Button)); scripter.RegisterType(typeof(MessageBox)); scripter.AddModule("1"); scripter.AddCode("1", @"using System.Windows.Forms;"); scripter.AddCode("1", @"public class TestClass"); scripter.AddCode("1", @"{"); scripter.AddCode("1", @"public static void OnClickHandler(object sender, EventArgs e)"); scripter.AddCode("1", @"{"); scripter.AddCode("1", @"MessageBox.Show(sender.ToString());"); scripter.AddCode("1", @"MessageBox.Show(e.ToString());"); scripter.AddCode("1", @"}"); scripter.AddCode("1", @"}"); scripter.AddCode("1", @"Form f = new Form();"); scripter.AddCode("1", @"f.Text = ""Script-defined application"";"); scripter.AddCode("1", @"Button b = new Button();"); scripter.AddCode("1", @"b.Text = ""Click me"";"); scripter.AddCode("1", @"b.Click += new EventHandler(TestClass.OnClickHandler);"); scripter.AddCode("1", @"f.Controls.Add(b);"); scripter.AddCode("1", @"f.ShowDialog();"); scripter.Run(RunMode.Run); if (scripter.HasErrors) MessageBox.Show(scripter.Error_List[0].Message); } } }
where Helper is a host-defined method which calls script-defined delegate. For example:scripter.RegisterEventHandler(typeof(MyEventHandler), "MyEvent", new MyEventHandler(Helper));
The following events of System.Windows.Forms.Control class are already registered:void Helper(object sender, MyEventArgs x) { scripter.ApplyDelegate("MyEvent", sender, x); // the first 2 arguments will determine the script-defined delegate }
so, the demo application presented at this page will work correctly without any changes.Click CursorChanged DockChanged DoubleClick EnabledChanged Enter Leave MouseEnter MouseLeave Resize TextChanged