如何调用A)一个文本框B)和一个表单中的按钮单击事件(这是通过一个类在按钮单击事件中创建的)

本文关键字:一个 单击 事件 按钮 创建 调用 何调用 文本 表单 | 更新日期: 2023-09-27 18:17:37

我创建了一个类

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
}

并访问它的button_click事件,比如

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

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

如何调用A)一个文本框B)和一个表单中的按钮单击事件(这是通过一个类在按钮单击事件中创建的)

从Form中派生新类。在构造函数中添加控件的方式与在showCategoryDialog()中所做的相同,然后为每个控件添加属性,使您可以访问该控件。例如,这个示例展示了如何仅为Button:

执行此操作
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 = ...

事件(如Button click)无需执行任何操作即可自动访问。例如

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。