【问题标题】:specify a object on a public method在公共方法上指定对象
【发布时间】:2015-06-13 10:44:45
【问题描述】:

我有以下方法

public partial class formTabelasPsi : Form
{

    private Form1 Opener { get; set; }

    public formTabelasPsi(Form1 opener)
    {
        this.Opener = opener;
        InitializeComponent();
    }

     public static void publicmethod1(string path)
     {
     //some code related to path

     }
}

我希望publicmethod1 在此formTabelasPsi 运行时选中一个复选框。

我尝试使用formTabelasPsi.checkBox1.Checked = true; 指定它,但代码显示需要对象引用。

也许这对你们大多数人来说是一个新手问题,但老实说,作为一个业余程序员,我在任何地方都没有清楚地发现这个问题。

【问题讨论】:

  • 这段代码附加在什么表格上?
  • 您不能从静态方法访问类成员。您希望如何在实践中使用 publicmethod1?你为什么要把它变成静态的?
  • 因为如果我不将其设为静态,当我在 form1 上使用它时,它会报错,指出非静态字段、方法等需要对象引用...称为 publicmethod1 @史蒂夫米查姆

标签: c# object partial-classes public-method


【解决方案1】:

checkbox 属于该表单的一个实例,您需要引用该实例才能对其进行更新

 public void publicmethod1(string path)
 {
     this.checkBox1.Checked = true;
 }

方法还需要属于表单的一个实例,更多实例可以参考here

【讨论】:

  • 不正确,方法是static,因此他不接受this 关键字,我试过了:p
  • @ng80092b - 再次查看他的代码示例,他删除了 static 关键字。如果您必须使方法静态,那么您必须传入您的类 formTabelasPsi 的实例。正如 Sayse 所指出的,静态成员不能直接访问实例成员。
  • @ng80092b - 请参阅我的答案中包含的链接,该方法也不应该是静态的,您始终可以通过参数传入表单的实例,但在某些时候,您将需要带一个实例来获取实例属性/字段。所以你不妨先从实例开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2015-02-24
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多