字段名称在私有静态方法中不可访问
本文关键字:访问 静态方法 字段 | 更新日期: 2023-09-27 18:35:40
在我的通知中,我有十几个txt字段,例如txtName、txtTitle 等这些字段可以在构造函数内部或 btnOk 操作中访问,但我想在某些命令上调用私有静态方法,该方法将使用加载的对象数据填充所有 txt 字段。所以我有
public AddEditForm()
{
InitializeComponent();
}
我尝试了
private static PopulateFormFields(Book book)
{
if(book !=null)
{
// txtName.Text = book.Name;
// txtName var is not accessible here
}
else
{
throw new Exception("You must provide valid book instance!");
}
}
静态方法不能直接访问声明为同一类中的实例变量的字段或控件。
静态方法需要类的实际实例才能处理,因为这些变量仅在声明和初始化窗体的实例时才存在。
您需要做的是在静态方法中传递实例
private static void PopulateFormFields(AddEditForm current, Book book)
{
if(book !=null)
{
current.txtName.Text = book.Name;
}
else
{
throw new Exception("You must provide valid book instance!");
}
}
在AddEditForm的当前实例中,调用静态私有方法
AddEditForm.PopulateFormFields(this, book);
编辑:我忘了说您也可以从方法中删除静态关键字。在这种情况下,该方法无需使用类名标识符即可访问,并且可以访问当前实例的变量(字段、控件)。(优点去Kris Vandermotten
及其上面的评论也注意到缺少的void关键字)
"txt 字段"是表单的实例变量,因此永远无法通过静态方法访问。