通过单击按钮调用类函数

Posted

技术标签:

【中文标题】通过单击按钮调用类函数【英文标题】:Call a class function with button click 【发布时间】:2017-10-01 06:03:12 【问题描述】:

我尝试在按钮单击事件中使用一个类。

文件:Character.cs

public class Character

    public Character(string name, int health, int weight, int gold, Inventory inventory)
    
        this.Name = name;
        this.Health = health;
        this.Weight = weight;
        this.Gold = gold;
        this.Inventory = inventory;
    

    public string Name;
    public int Health;
    public int Gold;
    public int Weight;
    public Inventory Inventory;

我在 Form1.cs 文件中创建了一个角色。

Character Adventurer = new Character("Geralt von Riva", 100, 50, 5, new Inventory(new Weapon(1, "Needle", 5, 5, 15, 0), new Armor(2, "Jerkin", 3, 11, 5), new Potion(3, "Little Healhy", 2, 0, 20)));

这很好用。现在,我想在表单中添加一个按钮(此处名为 button1)。所以我将一个按钮从工具箱拖放到表单设计器中。稍微双击后,visual studio 添加了这行代码

    private void button1_Click(object sender, EventArgs e)
    
        // here i would like to do something like this:
        Adventurer.Inventory.WeaponList.Add(new Weapon(...));
    

问题是,我不能在 Form1.cs 文件的公共 Form1() 类之外使用 Adventurer。我如何让这个冒险者“公开”?我对此有点陌生,所以请善待。

【问题讨论】:

简单公开冒险家 你在哪里声明你的冒险者?在方法中还是在类中? 评论 Nr.1 解决了这个问题。不知道我为什么不自己想出这个。谢谢! 【参考方案1】:

为了您能够访问实例,您应该在全局范围内声明变量,例如

public Form1 : Form

  private Character Adventurer = null;
  public Form1()
  
      Adventurer = new Character(.....); 
  
    private void button1_Click(object sender, EventArgs e)
    
        // here i would like to do something like this:
        Adventurer.Inventory.WeaponList.Add(new Weapon(...));
    

【讨论】:

我建议使用属性,而不是公共字段。 @Mafii,这是真的,但如果这是 OP 所缺少的,那么它也可能是一个 private 字段......请参阅答案中的编辑。

以上是关于通过单击按钮调用类函数的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过单击按钮调用子程序并收到编译错误:未定义子或函数

如何通过按钮单击调用更新功能代码

Django如何通过单击带有变量的提交按钮从ajax调用views.py中的函数

通过调用 ASP.NET 按钮单击从 jQuery 模态对话框回发

如何通过单击查看来调用函数[重复]

sweetAlert - 单击确认按钮时不调用函数