我该如何解决?非静态字段需要对象引用 - C#

时间:2012-12-11 04:36:26

标签: c# winforms

我很抱歉还有另一个愚蠢的问题。我几乎已经完成了我的设置保存winform,非常感谢StackOverflow的人当然,但我最后还是坚持了。请不要因为我是初学者而将此标记下来。

我收到以下错误:

  

非静态字段,方法或属性'ShovelShovel.WindowSize.Width.get'

需要对象引用      

非静态字段,方法或属性'ShovelShovel.WindowSize.Height.get'

需要对象引用

下面:

Settings.cs

public partial class Settings : Form
{
    public Settings()
    {
        InitializeComponent();
    }

    public void button1_Click(object sender, EventArgs e)
    {
        var windowSize = new WindowSize { Width = WindowSize.Width, Height = WindowSize.Height };

        WindowSizeStorage.WriteSettings(windowSize);

        Application.Exit();
    }
}

其中:

WindowSize.cs

public class WindowSize
{
    public int Width { get; set; }
    public int Height { get; set; }
}

public static class WindowSizeStorage
{
    public static string savePath = "WindowSize.dat";

    public static WindowSize ReadSettings()
    {
        var result = new WindowSize();
        using (FileStream fileStream = new FileStream(savePath, FileMode.Open))
        {
            using (BinaryReader binaryReader = new BinaryReader(fileStream))
            {
                result.Width = binaryReader.ReadInt32();
                result.Height = binaryReader.ReadInt32();
            }
        }

        return result;
    }

    public static void WriteSettings(WindowSize toSave)
    {
        using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(savePath, FileMode.Create)))
        {
            binaryWriter.Write(toSave.Width);
            binaryWriter.Write(toSave.Height);
        }
    }
}

http://forums.codeguru.com/showthread.php?530631-I-m-having-trouble-with-my-code

如果上述情况不足,您可以在附件中找到我项目的完整文件。

1 个答案:

答案 0 :(得分:3)

也许你的意思是:

var windowSize = new WindowSize { Width = this.Width, Height = this.Height };

而不是:

var windowSize = new WindowSize { Width = WindowSize.Width, Height = WindowSize.Height };

如上所述,它需要Width和Height成为WindowSize类的静态属性,但我不认为这是你的意图。相反,使用表单实例WidthHeight属性更有意义。

相关问题