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事件并执行您想要的任何检查。