控件中如何调用windows Form中的Load事件呀 我的控件中要刷新數據,需要重新執行windows Form的Load事件,該如何引用呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Form1_Load(this, EventArgs.Empty); 各位,不是直接調用,是Form所屬的控件,其通過this.FindForm(),找到所屬Form,再如何調用Form的Load事件的問題 这样做(再次调用Form_Load的响应函数)不好。需要再次调用的代码,最好独立出来。比如以下代码,控件中要再次刷新数据,可以这样调用(this.Parent as Form1).MyInitialization();class Form1 : Form{ void Form1_Load(object sender, EventArgs e) { //... MyInitialization(); } public void MyInitialization() { //刷新数据 }} 把load里的代码写成另外的方法,再调用. 大哥,那樣,我上百个Form都得要去修改,如果可以直接调用控件所属Form的Load方法,可以少修改好多地方;如果需要,可以再手工修改。 如果load方法是public的可以这么掉public void Form1_Load( object sender , EventArgs e ) { MessageBox.Show( "test" ); } private void button2_Click( object sender , EventArgs e ) { object[] obj = new object[2]; obj[0] = button2.FindForm(); obj[1] = new EventArgs(); button2.FindForm().GetType().GetMethod( "Form1_Load" ).Invoke( this , obj ); } 那这样看来,只有修改Form的Load事件的为Public的了,有其它的办法吗? 用反射直接调用即可object[] obj=new object[2];obj[0]=this.FindForm();obj[1]=new EventArgs();MethodBase b = this.FindForm().GetType().GetMethod(this.FindForm().Name + "_Load", BindingFlags.Instance | BindingFlags.NonPublic);if(b!=null) b.Invoke(this.FindForm(), obj);可参考以下代码:反射的查看类型信息:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxadvance/html/7e7303a9-4064-4738-b4e7-b75974ed70d2.htm下面的示例使用所有的反射 *Info 类以及 BindingFlags 来列出指定类的所有成员(构造函数、字段、属性、事件和方法),并将这些成员划分为静态和实例类别。// This program lists all the members of the // System.IO.BufferedStream class.using System;using System.IO;using System.Reflection;class ListMembers { public static void Main(String[] args) { // Specifies the class. Type t = typeof (System.IO.BufferedStream); Console.WriteLine ("Listing all the members (public and non public) of the {0} type", t); // Lists static fields first. FieldInfo [] fi = t.GetFields (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Static Fields"); PrintMembers (fi); // Static properties. PropertyInfo [] pi = t.GetProperties (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Static Properties"); PrintMembers (pi); // Static events. EventInfo [] ei = t.GetEvents (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Static Events"); PrintMembers (ei); // Static methods. MethodInfo [] mi = t.GetMethods (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Static Methods"); PrintMembers (mi); // Constructors. ConstructorInfo [] ci = t.GetConstructors (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Constructors"); PrintMembers (ci); // Instance fields. fi = t.GetFields (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Instance Fields"); PrintMembers (fi); // Instance properites. pi = t.GetProperties (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Instance Properties"); PrintMembers (pi); // Instance events. ei = t.GetEvents (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Instance Events"); PrintMembers (ei); // Instance methods. mi = t.GetMethods (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); Console.WriteLine ("// Instance Methods"); PrintMembers (mi); Console.WriteLine ("\r\nPress ENTER to exit."); Console.Read(); } public static void PrintMembers (MemberInfo [] ms) { foreach (MemberInfo m in ms) { Console.WriteLine ("{0}{1}", " ", m); } Console.WriteLine(); } 请各位大虾帮帮忙 silverlight错误 C#窗体程序中怎么Ctrl+s保存 C# listview 中的项一行或者多行上移,下移问题 急!!! C#中内存回收问题? 留言板的问题,请高手帮忙. 请教:请问这个SQL SERVER 语句该怎么写? 怎样实现有序的Queue 為什麼 我的ds.Tables.Count 老是為0? DataGrid 也能顯示數據! 数组比较,求源码 水晶报表-根据DataSet动态生成报表字段.做过的请进 刚学习Remoting,遇到了两个问题,请大家指点 自己做的一个模拟机(22选5摇奖机模拟机)
(this.Parent as Form1).MyInitialization();
class Form1 : Form
{
void Form1_Load(object sender, EventArgs e)
{
//...
MyInitialization();
} public void MyInitialization()
{
//刷新数据
}
}
{
MessageBox.Show( "test" );
} private void button2_Click( object sender , EventArgs e )
{
object[] obj = new object[2];
obj[0] = button2.FindForm();
obj[1] = new EventArgs();
button2.FindForm().GetType().GetMethod( "Form1_Load" ).Invoke( this , obj );
}
object[] obj=new object[2];
obj[0]=this.FindForm();
obj[1]=new EventArgs();
MethodBase b = this.FindForm().GetType().GetMethod(this.FindForm().Name + "_Load", BindingFlags.Instance | BindingFlags.NonPublic);
if(b!=null)
b.Invoke(this.FindForm(), obj);
可参考以下代码:
反射的查看类型信息:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxadvance/html/7e7303a9-4064-4738-b4e7-b75974ed70d2.htm下面的示例使用所有的反射 *Info 类以及 BindingFlags 来列出指定类的所有成员(构造函数、字段、属性、事件和方法),并将这些成员划分为静态和实例类别。
// This program lists all the members of the
// System.IO.BufferedStream class.
using System;
using System.IO;
using System.Reflection;class ListMembers {
public static void Main(String[] args) {
// Specifies the class.
Type t = typeof (System.IO.BufferedStream);
Console.WriteLine ("Listing all the members (public and non public) of the {0} type", t); // Lists static fields first.
FieldInfo [] fi = t.GetFields (BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine ("// Static Fields");
PrintMembers (fi); // Static properties.
PropertyInfo [] pi = t.GetProperties (BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine ("// Static Properties");
PrintMembers (pi); // Static events.
EventInfo [] ei = t.GetEvents (BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine ("// Static Events");
PrintMembers (ei); // Static methods.
MethodInfo [] mi = t.GetMethods (BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine ("// Static Methods");
PrintMembers (mi); // Constructors.
ConstructorInfo [] ci = t.GetConstructors (BindingFlags.Instance |
BindingFlags.NonPublic | BindingFlags.Public);
Console.WriteLine ("// Constructors");
PrintMembers (ci); // Instance fields.
fi = t.GetFields (BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine ("// Instance Fields");
PrintMembers (fi); // Instance properites.
pi = t.GetProperties (BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine ("// Instance Properties");
PrintMembers (pi); // Instance events.
ei = t.GetEvents (BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public);
Console.WriteLine ("// Instance Events");
PrintMembers (ei); // Instance methods.
mi = t.GetMethods (BindingFlags.Instance | BindingFlags.NonPublic
| BindingFlags.Public);
Console.WriteLine ("// Instance Methods");
PrintMembers (mi); Console.WriteLine ("\r\nPress ENTER to exit.");
Console.Read();
} public static void PrintMembers (MemberInfo [] ms) {
foreach (MemberInfo m in ms) {
Console.WriteLine ("{0}{1}", " ", m);
}
Console.WriteLine();
}