1
我想創建一個窗體,其中包含面板創建的programmaticaly和控件能夠拖放和調整大小就像Microsoft Visual Studio IDE。在運行時創建,拖放和調整控件大小
我創建了這樣的東西。應該有這麼多的線條(藍色的),還有很多的盒子(黃色的),我可以移動藍色線條內的黃色框。所有功能都可以在設計時間內定義控件。這裏
public partial class Form1 : Form
{
bool allowResize = false;
public Form1()
{
InitializeComponent();
panel1.AllowDrop = true;
panel2.AllowDrop = true;
panel3.AllowDrop = true;
panel4.AllowDrop = true;
panel1.DragEnter += panel_DragEnter;
panel2.DragEnter += panel_DragEnter;
panel3.DragEnter += panel_DragEnter;
panel4.DragEnter += panel_DragEnter;
panel1.DragDrop += panel_DragDrop;
panel2.DragDrop += panel_DragDrop;
panel3.DragDrop += panel_DragDrop;
panel4.DragDrop += panel_DragDrop;
panelMove.MouseDown += panelMove_MouseDown;
}
void panelMove_MouseDown(object sender, MouseEventArgs e)
{
panelMove.DoDragDrop(panelMove, DragDropEffects.Move);
}
void panel_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
void panel_DragDrop(object sender, DragEventArgs e)
{
((Panel)e.Data.GetData(typeof(Panel))).Parent = (Panel)sender;
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
allowResize = true;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
allowResize = false;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (allowResize)
{
this.panelMove.Height = pictureBox1.Top + e.Y;
this.panelMove.Width = pictureBox1.Left + e.X;
}
}
}
和源代碼,但我不知道如何在運行時創建thoose控制(藍色和黃色框)。
創建自己的設計師從來不是一個錯誤。 VS讓它看起來太簡單了,但這是一項非常大量的工作。至少在您自己的程序中利用現有的設計器,請查看[雜誌文章](http://msdn.microsoft.com/en-us/magazine/cc163634.aspx) – 2013-04-22 11:17:58
我可以推薦WPF嗎?它'更強大和可定製。看看[這個圖設計師](http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1) – 2013-04-22 15:29:12
@ HighCore我從來沒有嘗試過,但它值得去嘗試,因爲它似乎 – Rapunzo 2013-04-23 07:59:53