我對C#很陌生。動態創建表單和容器
下面是我試圖在代碼內創建表單和容器的代碼;但我遇到了問題。
- 我從一個新的
Windows Forms Application
模板開始。 - 我稍微更改
Program.cs
文件,以便我能夠動態創建FormMain
。 - 當行
Container.Add(BtnClose)
和BtnClose_Setup()
在FormMain.cs
被註釋掉時,代碼編譯並運行。但是,該計劃仍然存在一些不可思議的結果。
(a)本形式FormMain
假定在(20,20)(左上角)展現出來,作爲FormMain_Setup
說;但是當我運行應用程序時,雖然寬度&高度設置按預期顯示(800,600),但左上角每次都會更改(不會粘到20,20)。 (b)esc鍵按預期工作並關閉窗體和應用程序。
- 當線
Container.Add(BtnClose)
和FormMain.cs
BtnClose_Setup()
是不評論,代碼編譯,但它在運行時VS向我發送一條消息:「未處理的異常類型的「系統。 TypeInitializationException'發生在mscorlib.dll「
有人能告訴我我做錯了什麼嗎?
Program.cs
文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test {
static class Program {
public static FormMain FormMain = new FormMain();
[STAThread]
static void Main() {
Application.Run(FormMain);
}
}
}
FormMain.cs
文件:
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 test {
public partial class FormMain : Form {
Button BtnClose = new Button();
public void BtnClose_Setup() {
BtnClose.Text = "Ok";
BtnClose.Top = 500;
BtnClose.Left = 700;
}
public void FormMain_Setup() {
Top = 20;
Left = 20;
Width = 800;
Height = 600;
KeyDown += FormMain_KeyDown;
//Container.Add(BtnClose);
//BtnClose_Setup();
}
void FormMain_KeyDown(object sender, KeyEventArgs e) {
if(e.KeyCode == Keys.Escape) {
Close();
}
}
public FormMain() {
InitializeComponent();
FormMain_Setup();
}
}
}
與重寫默認方法相比,這似乎是一個更好的解決方案。 – ssd 2014-11-23 12:27:26