我想开始用 C# 编程(我过去研究过它,我知道它与 Java 有很多相似之处)。
但我在 Java 中喜欢的是用代码布局组件的能力。我非常不喜欢表单设计器,据我所知,Visual Studio 并没有给你这个条件。
我想知道 C# 是否有布局管理器或类似的东西,因为这更适合我的喜好。
TIA,安德烈
我想开始用 C# 编程(我过去研究过它,我知道它与 Java 有很多相似之处)。
但我在 Java 中喜欢的是用代码布局组件的能力。我非常不喜欢表单设计器,据我所知,Visual Studio 并没有给你这个条件。
我想知道 C# 是否有布局管理器或类似的东西,因为这更适合我的喜好。
TIA,安德烈
这取决于您使用的用户界面技术。
WPF/Xaml 和 Windows 窗体都可以完全在代码中完成,尽管使用 WPF 有点棘手,因为它确实面向与 Xaml 一起使用。
使用 Windows 窗体,设计人员实际上构建了所需的代码(请参阅 form.designer.cs),因此您可以准确地看到“手动”编写此代码需要什么。
对于 WPF,它有点棘手,但仍然可能。 Charles Petzold 的 WPF 书籍实际上采用了这种方法,并从构建 WPF 用户界面的代码优先方法开始,然后展示了如何使用标记 (xaml)。话虽如此,Xaml 方法在许多方面都比在代码中做所有事情要好得多,也更灵活。
有一些方法可以让它的行为类似于在 winforms 中的 Java
WPF 有几种不同的布局管理器,请参阅Docs
没有人强迫您使用设计器,您可以从头开始对所有内容进行硬编码。不知道谁告诉你你不能用 Visual Studio 做到这一点,但我不会再听那个人的了。
在后台为您生成布局代码。您可以检查 myfile.designer.cs 文件中的代码
下图显示了 Visual Studio 中的一些布局:
查看为流程布局生成的代码。所以你可以做其他类似的控制,并了解它是如何生成的
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;
但设计师会节省你的时间。
查看 System.Windows.Forms 以获取非 Web 内容
System.drawing 和 system.text 也可能很有趣,但大多数 UI 内容都在 system.windows.forms 中。