【问题标题】:Can't Change Form Attributes in Windows Forms无法更改 Windows 窗体中的窗体属性
【发布时间】:2018-12-14 23:43:46
【问题描述】:

我以前用 C# 编程,后来改用 Java,现在我必须同时使用这两种语言。回到 C# 有点困难,而且我在从我的代码中更改表单的属性时遇到了麻烦。这里的目标是使窗口无法调整大小,根据Disable Resizing of a Windows Form,我使用代码:form1.FormBorderStyle = FormBorderStyle.FixedSingle;

但是,当我尝试这样做时,我得到“非静态字段、方法或属性 'Form.FormBorderStyle' 需要对象引用”。到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Audio_File_Management {
    public partial class form1 : Form {
        public form1() {
            InitializeComponent();
        }
        public static void Main() {
            form1.FormBorderStyle = FormBorderStyle.FixedSingle;
        }
    }
}

如何更改表单的属性?

【问题讨论】:

  • this.FormBorderStyle = FormBorderStyle.FixedSingle; 放在InitializeComponent(); 行下。摆脱主块。您也可以从设计编辑器属性窗口中执行此操作。
  • public static void Main() 在这里做什么?您可以将MaximumSizeMinimumSize 设置为相同的设计值,而不是FormBorderStyle.FixedSingle,保留标准边框(如果更可取)。无论如何,在构造函数中设置这些属性:public form1() { (here) }
  • 你的类名和对象名不能相同
  • 如果你的类名是 Form1 那么你应该创建 Form1 类的对象然后在你的代码中使用

标签: c# windows winforms windows-forms-designer


【解决方案1】:

您的代码不正确:

namespace Audio_File_Management {
public partial class Form1 : Form {
public static Form1 objForm1;
    public Form1() {
        InitializeComponent();
    }

    public static Form1 GetForm()
    {
        if( (objForm1 == null) || objForm1.IsDisposed)
        {
           objForm1 = new Form1();
        }
        return objForm1;
    }

 }
}

public class Program
{
   public static void Main() {
        Form1.GetForm().FormBorderStyle = FormBorderStyle.FixedDialog;
    }
}

【讨论】:

  • public static void Main() 在 Form 类中做了什么?去掉它。为什么要返回同一个类的新实例并设置新实例的属性。也将其删除。剩下的,public Form1() { InitializeComponent(); } 就是所需要的。在那里设置属性。就是这样。
  • @Jimi 谢谢你,但 GetForm() 方法仅在没有可用于该 Form 类的实例时创建一个新实例。
  • @LarsTech 。我已经更新了我的代码。很抱歉给您带来不便。
  • 重新阅读我的评论。您只需要在表单的构造函数中设置该属性。顺便说一句,这不是 VB.Net,没有默认的 Form 实例:public static Form1?你在哪里见过这个? public class Program,在这里?这甚至意味着什么?
  • 当然没有默认的 Form 实例,但是是的,有可能表单已被处理,有人想要重新使用同一个类,当有人想要一次又一次地使用同一个实例时,他/她为什么不要使用我写的方法?程序类存在于一个单独的文件中;这只是为了演示目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多