如何从课堂上打电话?

时间:2015-08-09 23:27:27

标签: c# winforms

这是我的表格:

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就不会那么长了。

任何帮助将不胜感激。提前谢谢。

3 个答案:

答案 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的代码。该页面的底部应该是您的组件列表。所有这些都是私人的。将您需要的内容从私有更改为内部,您可以从程序中的其他类访问它们。但是,请注意,我认为你可能会得到一些无证件的行为。但它会让你从程序中的另一个类中获取那些表单对象。