龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

C#实现运行期控件设计

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
最近看到很多人对C#运行期控件设计的问题,于是写了这个Memo希望对大家有用 1、实现了控件自由拖动 2、实现了控件的拖动创建,右键删除等类似IDE的控件创建,当然更多功能靠大家自己

最近看到很多人对C#运行期控件设计的问题,于是写了这个Memo希望对大家有用
 
  1、实现了控件自由拖动
  2、实现了控件的拖动创建,右键删除等类似IDE的控件创建,当然更多功能靠大家自己完善
  3、实现属性框与控件的绑定,可以在运行期修改控件的Text...

  以下是部分代码

view plaincopy to clipboardprint?
private void button2_Click(object sender, EventArgs e)
{        //控件框的显示与隐藏
 if (panel1.Visible == true)
 { 
  button2.Text = "+  控件框";
  panel1.Visible = false;
 }
 else
 { 
  button2.Text = "-  控件框";
  panel1.Visible = true;
 }
}  
private void button2_Click(object sender, EventArgs e)
{
 //控件框的显示与隐藏
 if (panel1.Visible == true)
 {
  button2.Text = "+  控件框";
  panel1.Visible = false;
 }
 else
 {
  button2.Text = "-  控件框";
  panel1.Visible = true;
 }
}

view plaincopy to clipboardprint?
private void button3_MouseDown(object sender, MouseEventArgs e)

//判断鼠标左键按下 
 if (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("System.Windows.Forms.Button"));
 Button btn_new = new Button();
 btn_new.ContextMenuStrip = contextMenuStrip1;
 btn_new.Name = btn_new.Text = btn.Text + "--" + name;
 btn_new.Left = PointToClient(MousePosition).X-panel4.Left;
 btn_new.Top = PointToClient(MousePosition).Y - panel4.Top;        //加载事件
 btn_new.Click += new System.EventHandler(this.button1_Click);
 btn_new.MouseLeave += new System.EventHandler(this.button1_MouseLeave);
 btn_new.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button1_MouseDown);
 btn_new.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
 btn_new.Parent = panel4;
 name++;
}  
private void button3_MouseDown(object sender, MouseEventArgs e)
{
 //判断鼠标左键按下
 if (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("System.Windows.Forms.Button"));
 Button btn_new = new Button();
 btn_new.ContextMenuStrip = contextMenuStrip1;
 btn_new.Name = btn_new.Text = btn.Text + "--" + name;
 btn_new.Left = PointToClient(MousePosition).X-panel4.Left;
 btn_new.Top = PointToClient(MousePosition).Y - panel4.Top;
 //加载事件
 btn_new.Click += new System.EventHandler(this.button1_Click);
 btn_new.MouseLeave += new System.EventHandler(this.button1_MouseLeave);
 btn_new.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button1_MouseDown);
 btn_new.MouseMove += new System.Windows.Forms.MouseEventHandler(this.button1_MouseMove);
 btn_new.Parent = panel4;
 name++;
}

 

view plaincopy to clipboardprint?
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)
{        //判断鼠标左键按下
 if (e.Button == MouseButtons.Left)
 { 
 Button btn = (Button)(sender);            //初始化拖放操作。
 btn.DoDragDrop(btn, DragDropEffects.Copy);
 }
}  
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)
{
 //判断鼠标左键按下
 if (e.Button == MouseButtons.Left)
 {
 Button btn = (Button)(sender);
 //初始化拖放操作。
 btn.DoDragDrop(btn, DragDropEffects.Copy);
 }
}

实现的效果图如下

C#实现运行期控件设计
  更多功能当然需要大家自己扩展,假如你有兴趣...
  欢迎大家光临MC编程网和我进行编程技术的探讨...

精彩图集

赞助商链接