最近看到很多人对C#运行期Control控件设计
问题
于是写了这个Memo希望对大家有用
1、实现了Control控件自由拖动 2、实现了Control控件拖动创建,右键删除等类似IDEControl控件创建,当然更多功能靠大家自己完善
3、实现属性框和Control控件
绑定,可以在运行期修改Control控件
Text...
以下是部分代码
view plaincopy to clipboardpr
?
="dp-c">
="alt">
="keyword">private ="keyword">void
button2_Click(="keyword">object
sender, EventArgs e)
="">
{
="alt">
="comment">//Control控件框
显示和隐藏
="">
="keyword">
(panel1.Visible ="keyword">true
)
="alt">
{
="">
button2.Text = ="
">"+ Control控件框"
;
="alt">
panel1.Visible = ="keyword">false
;
="">
}
="alt">
="keyword">
="">
{
="alt">
button2.Text = ="
">"- Control控件框"
;
="">
panel1.Visible = ="keyword">true
;
="alt">
}
="">
}
="c-sharp" style="DISPLAY: none" rows="15" cols="50" name="code"> private void button2_Click(object sender, EventArgs e)
{
//Control控件框
显示和隐藏
(panel1.Visible
true)
{
button2.Text = "+ Control控件框";
panel1.Visible = false;
}
{
button2.Text = "- Control控件框";
panel1.Visible = true;
}
}
view plaincopy to clipboardpr
?
="dp-c">
="alt">
="keyword">private ="keyword">void
button3_MouseDown(="keyword">object
sender, MouseEventArgs e)
="">
{
="alt">
="comment">//判断鼠标左键按下
="">
="keyword">
(e.Button MouseButtons.Left)
="alt">
{
="">
Button btn = (Button)(sender);
="alt">
="comment">//
化拖放操作
="">
btn.DoDragDrop(btn, DragDropEffects.Copy);
="alt">
}
="">
}
="alt">
="">
="keyword">private
="keyword">void
panel4_DragDrop(="keyword">object
sender, DragEventArgs e)
="alt">
{
="">
="comment">//开始拖动
="alt">
Button btn = (Button)(e.Data.GetData(="
">"
.Windows.Forms.Button"
));
="">
Button btn_ = ="keyword">
Button;
="alt">
btn_.ContextMenuStrip = contextMenuStrip1;
="">
btn_.Name = btn_.Text = btn.Text + ="
">"--"
+ name;
="alt">
btn_.Left = PoToClient(MousePosition).X-panel4.Left;
="">
btn_.Top = PoToClient(MousePosition).Y - panel4.Top;
="alt">
="comment">//加载事件
="">
btn_.Click ="keyword">
.EventHandler(="keyword">this
.button1_Click);
="alt">
btn_.MouseLeave ="keyword">
.EventHandler(="keyword">this
.button1_MouseLeave);
="">
btn_.MouseDown ="keyword">
.Windows.Forms.MouseEventHandler(="keyword">this
.button1_MouseDown);
="alt">
btn_.MouseMove ="keyword">
.Windows.Forms.MouseEventHandler(="keyword">this
.button1_MouseMove);
="">
btn_.Parent = panel4;
="alt">
name;
="">
}
="c-sharp" style="DISPLAY: none" rows="15" cols="50" name="code"> private void button3_MouseDown(object sender, MouseEventArgs e)
{
//判断鼠标左键按下
(e.Button
MouseButtons.Left)
{
Button btn = (Button)(sender);
//
化拖放操作
btn.DoDragDrop(btn, DragDropEffects.Copy);
}
}
private void panel4_DragDrop(object sender, DragEventArgs e)
{
//开始拖动
Button btn = (Button)(e.Data.GetData("
.Windows.Forms.Button"));
Button btn_
=
Button
;
btn_
.ContextMenuStrip = contextMenuStrip1;
btn_
.Name = btn_
.Text = btn.Text + "--" + name;
btn_
.Left = Po
ToClient(MousePosition).X-panel4.Left;
btn_
.Top = Po
ToClient(MousePosition).Y - panel4.Top;
//加载事件
btn_
.Click
.EventHandler(this.button1_Click);
btn_
.MouseLeave
.EventHandler(this.button1_MouseLeave);
btn_
.MouseDown
.Windows.Forms.MouseEventHandler(this.button1_MouseDown);
btn_
.MouseMove
.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
btn_
.Parent = panel4;
name
;
}
view plaincopy to clipboardpr
?
="dp-c">
="alt">
="keyword">private ="keyword">void
panel4_DragEnter(="keyword">object
sender, DragEventArgs e)
="">
{
="alt">
e.Effect = DragDropEffects.Copy;
="">
}
="alt">
="">
="keyword">private
="keyword">void
button1_Click(="keyword">object
sender, EventArgs e)
="alt">
{
="">
groupBox1.Text = (sender ="keyword">as
Button).Name + ="
">"属性"
;
="alt">
textBox1.Text = (sender ="keyword">as
Button).Text;
="">
="alt">
}
="">
="alt">
="keyword">private
="keyword">void
button4_MouseDown(="keyword">object
sender, MouseEventArgs e)
="">
{
="alt">
="comment">//判断鼠标左键按下
="">
="keyword">
(e.Button MouseButtons.Left)
="alt">
{
="">
Button btn = (Button)(sender);
="alt">
="comment">//
化拖放操作
="">
btn.DoDragDrop(btn, DragDropEffects.Copy);
="alt">
}
="">
}
="c-sharp" style="DISPLAY: none" rows="15" cols="50" name="code"> private void panel4_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void button1_Click(object sender, EventArgs e)
{
groupBox1.Text = (sender as Button).Name + "属性";
textBox1.Text = (sender as Button).Text;
}
private void button4_MouseDown(object sender, MouseEventArgs e)
{
//判断鼠标左键按下
(e.Button
MouseButtons.Left)
{
Button btn = (Button)(sender);
//
化拖放操作
btn.DoDragDrop(btn, DragDropEffects.Copy);
}
}
view plaincopy to clipboardpr
?
="dp-c">
="alt">
="keyword">private ="keyword">void
toolStripMenuItem2_Click(="keyword">object
sender, EventArgs e)
="">
{
="alt">
="comment">//释放Control控件
="">
btnflag.Dispose;
="alt">
}
="">
="alt">
="keyword">private
="keyword">void
textBox1_KeyPress(="keyword">object
sender, KeyPressEventArgs e)
="">
{
="alt">
btnflag.Text = textBox1.Text;
="">
}
="alt">
="">
="keyword">private
="keyword">void
textBox1_KeyDown(="keyword">object
sender, KeyEventArgs e)
="alt">
{
="">
="comment">//响应回车
="alt">
="keyword">
(e.KeyValue 13)
="">
btnflag.Text = textBox1.Text;
="alt">
="">
}
="alt">
="">
="keyword">private
="keyword">void
button7_Click(="keyword">object
sender, EventArgs e)
="alt">
{
="">
="comment">//Control控件框
显示和隐藏
="alt">
="keyword">
(groupBox1.Visible ="keyword">true
)
="">
{
="alt">
button7.Text = ="
">"+ 属性窗口"
;
="">
groupBox1.Visible = ="keyword">false
;
="alt">
}
="">
="keyword">
="alt">
{
="">
button7.Text = ="
">"- 属性窗口"
;
="alt">
groupBox1.Visible = ="keyword">true
;
="">
}
="alt">
}
="c-sharp" style="DISPLAY: none" rows="15" cols="50" name="code"> private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
//释放Control控件
btnflag.Dispose
;
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
btnflag.Text = textBox1.Text;
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//响应回车
(e.KeyValue
13)
btnflag.Text = textBox1.Text;
}
private void button7_Click(object sender, EventArgs e)
{
//Control控件框
显示和隐藏
(groupBox1.Visible
true)
{
button7.Text = "+ 属性窗口";
groupBox1.Visible = false;
}
{
button7.Text = "- 属性窗口";
groupBox1.Visible = true;
}
}
实现
效果图如下
更多功能当然需要大家自己扩展
假如你有兴趣...
欢迎大家光临MC编程网和我进行编程技术
探讨...
延伸阅读
最新评论