C# 如何调用A)文本框B)和表单中的按钮单击事件(通过按钮单击事件中的类创建)

C# 如何调用A)文本框B)和表单中的按钮单击事件(通过按钮单击事件中的类创建),c#,C#,我创建了一个类 public static class Prompt { public static Form showCategoryDialog() { Form addCategoryDialog = new Form() { Width = 500, Height = 150, FormBorderStyle = FormBorderStyle.FixedDialog,

我创建了一个类

public static class Prompt
{
   public static Form showCategoryDialog()
   {
       Form addCategoryDialog = new Form()
       {
           Width = 500,
           Height = 150,
           FormBorderStyle = FormBorderStyle.FixedDialog,
           Text = "caption",
           StartPosition = FormStartPosition.CenterScreen
       };
       Label textLabel = new Label() { Left = 50, Top = 20, Text = "asd" };
       TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
       Button confirmation = new Button() { Text = "Ok", Left = 350, Width =          100, Top = 70, DialogResult = DialogResult.OK };
       confirmation.Click += (sender, e) => { addCategoryDialog.Close(); };
       addCategoryDialog.Controls.Add(textBox);
       addCategoryDialog.Controls.Add(confirmation);
       addCategoryDialog.Controls.Add(textLabel);
       addCategoryDialog.AcceptButton = confirmation;

       return addCategoryDialog;

   }
}
现在在表单的按钮单击事件中

private void addCateogoryClick(object sender, EventArgs e)
    {
        Form a = new Form();
        a = Prompt.showCategoryDialog();
        a.ShowDialog();
    }
在那里,在表单中创建一个文本框、按钮和标签,并将该表单分配给表单“a”。因为表单“a”也有文本框、按钮和标签,所以我想这样称呼它们

if(a.textbox.text == string.empty)
{
//do this
}
并访问它的按钮点击事件,如

a.button_click
{
  if(button.text == "ok")
  //do this
}

总结:我不知道如何访问表单控件(文本框、按钮等),也不知道在这种情况下如何使用事件。

从表单派生新类。在构造函数中,以与在showCategoryDialog()中相同的方式添加控件,然后为每个控件添加允许您访问此控件的属性。例如,此示例演示如何仅针对按钮执行此操作:

public class CategoryDialog : Form
{
    public CategoryDialog()
    {
        button1 = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK };
        Controls.Add(button1);
    }

    Button button1;

    // this property will let you access button
    public Button Button1 { get { return button1; } }
}
创建此表单的实例时,现在可以访问如下按钮:

CategoryDialog a = new CategoryDialog();
a.Button1.Text = ...
事件(如按钮单击)无需执行任何操作即可自动访问。例如

a.Button1.Click += (sender, e) =>
{
    //sender parameter contains instance of Button that was clicked
    var button = sender as Button;
    if(button.PropertyToBeChecked == ...)//check whatever you want to
    ...
};

如果您使用的是Visual Studio,则更简单。将新窗体添加到项目中(它将自动创建派生类),将控件(按钮、标签等)拖动到此窗体中,然后单击每个控件,并将其属性“Modifiers”更改为Public。

我真的不明白此
showCategoryDialog
的目的,您想用它做什么?它们不能是私有的。您还将创建两次新的表单实例。表格a=新表格();而不是a=showCategoryDialog=>addCategoryDialog=new Form()。您想做什么?只需创建一个需要名称的添加类别表单,如果名称字段不为空,按钮单击事件就会显示。有关如何从一个表单与另一个表单(或任何其他对象)交互的讨论,请参阅标记重复。您可以简单地公开字段,或者更好地实现隐藏表单底层控件的事件和属性。先生,谢谢你的评论,我想问你是否能告诉我a.Button1.Click=。。。使用了什么?如果我想检查某些内容,请说一段文字?@ShoaibSivany:我更新了我的答案,以显示如何将事件处理程序注册到Click事件并执行您想要的任何检查。