0

在我的程序中,我有两个窗体窗口,一个默认打开,另一个在第一个按钮单击时打开。他们交换一些数据并更改一些文本。大多数情况下都是非常简单的东西。现在我已经到了收到此错误的地步'charactertest.CharStats.CharStats(charactertest.MainForm)' must declare a body 因为它没有标记为 abstract、extern 或 partial。这将我指向我的public CharStats(MainForm callingForm)第二个窗口窗体中的行。

老实说,我几乎不知道这意味着什么,我有点熟悉局部,而且总的来说身体有点模糊(但我现在正在阅读)。无论如何,这是我的代码,我希望有人可以指导我解决方案,并可能让我补充一点。:)

public partial class MainForm : Form
    {
        public static string VariableLabel1;
        public static string Variable2;

        Random _r = new Random();

        public MainForm()
        {
            InitializeComponent();          
        }

        void CLoop()
        {
            while(true)
            {
                SetInfo();
            }
        }

        public void SetInfo(string newText)
        {
            this.pcNameLabel.Text = newText;
        }

        void ChClassButtClick(object sender, EventArgs e)
        {
            CharStats form = new CharStats(this);
            form.Show();
        }
    }

和我的第二个窗体

public partial class CharStats : Form
    {
        private MainForm _callingForm;
        public CharStats(MainForm callingForm)

        public CharStats()
        {
            InitializeComponent();
            _callingForm = callingForm;
        }

        void StatTransfer()
        {
            callingForm.SetInfo("Bob");
        }

        void FighterButtonClick(object sender, EventArgs e)
        {
            Fighter();
            StatTransfer();
        }
    }
4

3 回答 3

3

你有:

public partial class CharStats : Form
    {
        private MainForm _callingForm;
        public CharStats(MainForm callingForm)

        public CharStats()
        {
            InitializeComponent();
            _callingForm = callingForm;
        }

您可能正在寻找:

public partial class CharStats : Form
    {
        private MainForm _callingForm;
        public CharStats(MainForm callingForm)
        {
            InitializeComponent();
            _callingForm = callingForm;
        }

第一个尝试声明两个构造函数:一个带有MainForm参数,一个带有零参数。但是,第二个构造函数的主体使用了一个callingForm变量,该变量在该零参数构造函数中不可用。{}(如果您只是在第一个构造函数之后添加,这可能会引发编译器错误。)

您只需要一个构造函数接受一个MainForm名为的参数callingForm并将其存储在_callingForm. 因此,您应该取消零参数构造函数。

于 2013-09-05T21:36:22.943 回答
2

在你的第二节课你只写了

public CharStats(MainForm callingForm)

它应该是一个方法(构造函数)并且应该有打开和关闭{}

public CharStats(MainForm callingForm)
{
  //your work
}
于 2013-09-05T21:35:01.160 回答
1

您在 CharStats 类中定义了两个构造函数 - 一个没有方法主体,另一个引用了该范围内不存在的参数。

这是你想要的吗?

public partial class CharStats : Form
{
    private MainForm _callingForm;

    public CharStats(MainForm callingForm)
    {
        InitializeComponent();
        _callingForm = callingForm;
    }

    private CharStats() : this (null)
    {
        // For designer use only.
    }

    void StatTransfer()
    {
        callingForm.SetInfo("Bob");
    }

    void FighterButtonClick(object sender, EventArgs e)
    {
        Fighter();
        StatTransfer();
    }
}
于 2013-09-05T21:41:17.813 回答