На первый взгляд не очень удобно динамически создавать формы. Вот так было хорошо в VB скажете Вы. Спокойно на форму помещали элементы управление и не надо было нечего программировать.
Но это все на первый взгляд, среда VB давала Вам такую возможность, а мы то с С# работает без среды. Формы в VB хранились в файле FRM. А Сам FRM файл это обычный текстовый файл. Вот такого вида.
VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1095 ClientLeft = 60 ClientTop = 345 ClientWidth = 1845 LinkTopic = "Form1" ScaleHeight = 1095 ScaleWidth = 1845 StartUpPosition = 3 'Windows Default End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False
Хорошо с этим понятно, но а как же диалоговые окна например в VC++.
Но опять в данном виде проектировать окно позволяла среда VC++. А само диалоговое окно храниться в файле rc и опять же в текстовом виде.
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 166, 44 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About Tmp6" FONT 8, "MS Sans Serif" BEGIN ICON IDR_MAINFRAME,IDC_STATIC,11,17,21,20 LTEXT "Tmp6 Version 1.0",IDC_STATIC,40,10,57,8,SS_NOPREFIX LTEXT "Copyright (C) 2001",IDC_STATIC,40,25,119,8 DEFPUSHBUTTON "OK",IDOK,109,7,50,14,WS_GROUP END
Так что нет нечего удивительного что в С# без среды разработки нам приходиться использовать окна в стиле
class AppForm : Form { public AppForm() { MainMenu mnuFileMenu = new MainMenu(); this.Menu = mnuFileMenu; mnuFileMenu.MenuItems.Add("Test"); Label label1 = new Label(); label1.Text = "First Step Site"; label1.Location = new Point(15,15); label1.BackColor = Color.Pink; label1.ForeColor = Color.Maroon; this.Controls.Add(label1); } }
Все практически то же самое только написано на другом языке. И идея та же. Средства разработки наверно будут позволять Вам проектировать окна удобно. Только от этого ничего не поменяется, в смысле идеи и того как класс формы описываются.