3

我想开始用 C# 编程(我过去研究过它,我知道它与 Java 有很多相似之处)。

但我在 Java 中喜欢的是用代码布局组件的能力。我非常不喜欢表单设计器,据我所知,Visual Studio 并没有给你这个条件。

我想知道 C# 是否有布局管理器或类似的东西,因为这更适合我的喜好。

TIA,安德烈

4

5 回答 5

3

这取决于您使用的用户界面技术。

WPF/Xaml 和 Windows 窗体都可以完全在代码中完成,尽管使用 WPF 有点棘手,因为它确实面向与 Xaml 一起使用。

使用 Windows 窗体,设计人员实际上构建了所​​需的代码(请参阅 form.designer.cs),因此您可以准确地看到“手动”编写此代码需要什么。

对于 WPF,它有点棘手,但仍然可能。 Charles Petzold 的 WPF 书籍实际上采用了这种方法,并从构建 WPF 用户界面的代码优先方法开始,然后展示了如何使用标记 (xaml)。话虽如此,Xaml 方法在许多方面都比在代码中做所有事情要好得多,也更灵活。

于 2012-06-27T16:01:03.957 回答
2

有一些方法可以让它的行为类似于在 winforms 中的 Java

WPF 有几种不同的布局管理器,请参阅Docs

于 2012-06-27T16:09:13.880 回答
1

没有人强迫您使用设计器,您可以从头开始对所有内容进行硬编码。不知道谁告诉你你不能用 Visual Studio 做到这一点,但我不会再听那个人的了。

于 2012-06-27T16:01:15.953 回答
1

在后台为您生成布局代码。您可以检查 myfile.designer.cs 文件中的代码

下图显示了 Visual Studio 中的一些布局:

  • 左:布局控件
  • 右:像你在 Java 中的 FlowLayout 的例子

在此处输入图像描述

查看为流程布局生成的代码。所以你可以做其他类似的控制,并了解它是如何生成的

       this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
        this.button1 = new System.Windows.Forms.Button();
        this.button2 = new System.Windows.Forms.Button();
        this.button3 = new System.Windows.Forms.Button();
        this.button4 = new System.Windows.Forms.Button();
        this.flowLayoutPanel1.SuspendLayout();
        this.SuspendLayout();
        // 
        // flowLayoutPanel1
        // 
        this.flowLayoutPanel1.Controls.Add(this.button1);
        this.flowLayoutPanel1.Controls.Add(this.button2);
        this.flowLayoutPanel1.Controls.Add(this.button3);
        this.flowLayoutPanel1.Controls.Add(this.button4);
        this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.LeftToRight;
        //Other directions: BottomUp, RightToLeft, TopDown

        this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 42);
        this.flowLayoutPanel1.Name = "flowLayoutPanel1";
        this.flowLayoutPanel1.Size = new System.Drawing.Size(200, 71);
        this.flowLayoutPanel1.TabIndex = 0;

但设计师会节省你的时间。

于 2012-06-27T16:15:20.540 回答
0

查看 System.Windows.Forms 以获取非 Web 内容

System.drawing 和 system.text 也可能很有趣,但大多数 UI 内容都在 system.windows.forms 中。

于 2012-06-27T16:10:44.770 回答