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

C# 我该如何解决这个问题?非静态字段-C需要对象引用#,c#,winforms,C#,Winforms,我为另一个愚蠢的问题感到抱歉。我几乎完成了我的设置保存winform,当然要感谢StackOverflow的人们,但最后一件事我被卡住了。请不要因为我是初学者就把这记下来 我收到以下错误: 非静态字段、方法或属性“Spowlshovel.WindowsSize.Width.get”需要对象引用 非静态字段、方法或属性“Spowlshovel.WindowsSize.Height.get”需要对象引用 在这里: 设置.cs public partial class Settings : Form

我为另一个愚蠢的问题感到抱歉。我几乎完成了我的设置保存winform,当然要感谢StackOverflow的人们,但最后一件事我被卡住了。请不要因为我是初学者就把这记下来

我收到以下错误:

非静态字段、方法或属性“Spowlshovel.WindowsSize.Width.get”需要对象引用

非静态字段、方法或属性“Spowlshovel.WindowsSize.Height.get”需要对象引用

在这里:

设置.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();
    }
}
这是为了:

WindowsSize.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);
        }
    }
}

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

也许您的意思是:

var windowSize=newwindowsize{Width=this.Width,Height=this.Height}

而不是:

var windowSize=newwindowsize{Width=windowSize.Width,Height=windowSize.Height}

如前所述,它需要宽度和高度作为
WindowSize
类的静态属性,但我认为这不是您想要的。相反,使用表单实例
Width
Height
属性更有意义。

也许您的意思是:

var windowSize=newwindowsize{Width=this.Width,Height=this.Height}

而不是:

var windowSize=newwindowsize{Width=windowSize.Width,Height=windowSize.Height}


如前所述,它需要宽度和高度作为
WindowSize
类的静态属性,但我认为这不是您想要的。相反,使用表单实例
Width
Height
属性更有意义。

错误是不言自明的。为什么所有的代码?只需显示导致错误的行即可。可能的重复错误是不言而喻的。为什么所有的代码?只需显示导致错误的行。可能重复非常感谢,修复了它。当它允许我的时候,我会把这个标记为答案。非常感谢,它解决了这个问题。当它允许我的时候,我会把它标记为答案。