如何将enum从类传递到表单?

时间:2017-12-15 17:55:09

标签: c# winforms enums

我在类中创建了一个名为'direction'枚举,以便轻松实现“蛇”游戏。但我不知道如何将此类中的值传递给主窗体...

我尝试了什么?

1)我尝试在类和表单中创建相同的枚举,但是存在转换问题(Argument1:无法转换为'Project.Form1.direction''Class.direction'

2)我尝试了参数传递,但我失败了。

然后我尝试了一些愚蠢的事情,我在这里就提到了。

我还附上一份声明,也许它会帮助你。

let rect = this.renderer.createElement('rect', 'svg')
this.renderer.appendChild(svg, rect)

2 个答案:

答案 0 :(得分:1)

您只需要定义枚举一次。如果你在一个名为snake的公共类中声明你的枚举,就像这样:

    public class Snake
    {
        public enum direction { stop, up, down, left, right };

        //rest of class
    }

您可以使用类型Snake.direction

在Snake类外部使用枚举

修改

或者您可以在任何课程之外声明您的枚举。

    public class Snake
    {
        //class
    }

    public enum direction { stop, up, down, left, right };

然后您可以使用direction来访问枚举

答案 1 :(得分:0)

通常最好定义一个enum directly within a namespace,以便命名空间中的所有类都可以同样方便地访问它。但是,枚举也可以嵌套在类或结构中。这里是第一种方法的简单例子,HTH

  

Direction.cs定义enum Direction

namespace Snake.Game.Enums
{
    public enum Direction
    {
        Up,
        Down,
        Left,
        Right
    };
}
  

文件SnakeGame.cs定义具有Direction

类型属性的类
using Snake.Game.Enums;

namespace Snake.Game.Classes
{
    public class SnakeGame
    {
        public Direction Direction { get; set; }
    }
}
  

SnakeGameForm.cs定义表单,在构造函数中它成为SnakeGame类型的实例,因此表单每次都知道Direction是什么。

using System.Windows.Forms;
using Snake.Game.Classes;

namespace Snake.Game.Forms
{
    public partial class SnakeGameForm : Form
    {
        private readonly SnakeGame _game;

        public SnakeGameForm(SnakeGame game)
        {
            InitializeComponent();
            _game = game;
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            MessageBox.Show($"Direction of snake is '{ _game.Direction}'.");
        }
    }
}