这是我的表格:
namespace Secretary_1._0
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
这是我的班级:
namespace Secretary_1._0
{
public partial class Client
{
public static Form1 formCall = new Form1();
public static void Clients_Click(object sender, EventArgs e)
{
formCall.clientPanel.Visible = true;
formCall.clientLabel.Visible = true;
formCall.addClientButton.Visible = true;
formCall.clientListPanel.Visible = true;
formCall.clientListPanel.BringToFront();
formCall.addClientLabel.Visible = false;
formCall.clientInfoPanel.Visible = false;
}
public static void addClientButton_Click(object sender, EventArgs e)
{
formCall.clientPanel.Visible = true;
formCall.addClientLabel.Visible = true;
formCall.clientInfoPanel.Visible = true;
formCall.clientInfoPanel.BringToFront();
formCall.addClientButton.Visible = false;
formCall.clientListPanel.Visible = false;
formCall.clientAddPropertyPanel.Visible = false;
}
}
}
编辑:
我的问题是如何从客户端类调用Button_Click事件?
在Form1中单击“客户端”按钮时,我想调用位于客户端类中的事件。
这可能吗?我错过了什么吗?我搜索了每一个地方,但我似乎不明白。
我打算创建很多按钮,并希望为某些按钮创建一个类,这样我的form1.cs就不会那么长了。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
就这样做
//Set Access Modifier of that button to public or internal for same namespace
namespace Secretary_1._0
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void StartClient()
{
var client = new Client(this);
client.RequiredMethod(); //Call here method of client
}
}
}
现在
namespace Secretary_1._0
{
public partial class Client
{
public Form1 formCall;
//Constructor
public Client(Form1 form1)
{
formCall = form1;
formCall.someButton.Click += OnSomeButtonClick;
}
public void OnSomeButtonClick(object sender, EventArgs e)
{
//Code here to on form1 button click ...
}
public static void Clients_Click(object sender, EventArgs e)
{
formCall.clientPanel.Visible = true;
formCall.clientLabel.Visible = true;
formCall.addClientButton.Visible = true;
formCall.clientListPanel.Visible = true;
formCall.clientListPanel.BringToFront();
formCall.addClientLabel.Visible = false;
formCall.clientInfoPanel.Visible = false;
}
public static void addClientButton_Click(object sender, EventArgs e)
{
formCall.clientPanel.Visible = true;
formCall.addClientLabel.Visible = true;
formCall.clientInfoPanel.Visible = true;
formCall.clientInfoPanel.BringToFront();
formCall.addClientButton.Visible = false;
formCall.clientListPanel.Visible = false;
formCall.clientAddPropertyPanel.Visible = false;
}
}
}
修改:关注this帖子以解决使用活动的问题。
答案 1 :(得分:0)
1-open Form1.Designer.Cs
关于按钮生成代码的搜索
3 - 按钮代码中的最后一行必须是这样的
this.btn_insert.Click += new System.EventHandler(this.button1_Click);
注意:button1 =您的按钮名称
4 - 替换我刚才提到的最后一行,然后添加这一行
this.btn_insert.Click += new System.EventHandler(this.Clients_Click);
希望这会帮助你:))
我必须提到这个过程意味着将一个方法传递给委托(EventHandler),这对事件正常工作是必要的。
答案 2 :(得分:0)
我假设您使用的是Visual Studio。进入解决方案资源管理器。单击以展开Form1.cs。在树中找到Form1类并展开它。单击其中一个组件,使VS打开Form1.designer.cs的代码。该页面的底部应该是您的组件列表。所有这些都是私人的。将您需要的内容从私有更改为内部,您可以从程序中的其他类访问它们。但是,请注意,我认为你可能会得到一些无证件的行为。但它会让你从程序中的另一个类中获取那些表单对象。