如何使我的Form1.Clientsize公共所以我可以从我的班级访问它?

时间:2017-01-05 15:35:39

标签: c# winforms

我想在我的Class2中访问我的Form1.Clientsize.Height和Form1.Clientsize.Width,但是它一直说“非静态字段,方法或属性需要对象引用”ClientSize“”。

我试图通过创建一个可以根据屏幕大小调整属性大小的类来使我的应用程序可扩展。

Some of the code

提前致谢!

2 个答案:

答案 0 :(得分:1)

  

然而它一直在说"非静态字段,方法或属性需要对象引用" ClientSize""。

然后你应该创建一个对象引用。

在Form2中试试这个:

Form1 form = new Form1();

然后,您可以使用form编辑Form1,例如form.Show();等。

答案 1 :(得分:0)

在你的示例代码中,“this.CreateGraphics()”是正确的,除了你看起来它与Form本身在不同的类中。您只需要包含一个参数即可将Form实例传递给方法:

class Draw
{
    public Draw(Form form, int x, int y, string kluer, string turnKluer)
    {
        var g = form.CreateGraphics();
        g.Clear();
        Double curX = form.ClientSize.Width * 0.15;
        Double curY = form.ClientSize.Height * 0.2;
        <.... etc ....>
    }
}

Form类本身仅提供用于在屏幕上绘制Form的数据的定义。因为可以有多个表单,所以必须创建类的实例,以便它可以存储单个表单的特定值。您尝试访问和使用的属性特定于您正在使用的Form类的特定实例

如果你在Draw方法本身中使用了var form = new Form() ,那么你将创建一个新的类实例,但它可能与可能的实例不同要在屏幕上呈现。