就像工具箱里的控件那样,是用户在运行程序是可以采用拖拽操作。
解决方案 »
- socket编程方面的问题
- 如何给RowHead增加多行的行标题?
- wpf中x:name 和name的问题
- 请问:如何读出Web.Config中的连接字符串?
- 各位好,怎么用DataGridTextBoxColumn的Format属性来控制如果为0时不显示啊??
- 下载问题
- (100分求解) 怎样在窗体创建过程中关闭窗体
- 请问 C# 编写的程序在运行的时候要不要 .NET Framework 啊?
- 在c#里面如何创建控件呢,哪位老大帮小弟一下
- 如何在用DataSet.WriteXml()方法生成xml的时候让xml文件支持中文?
- C#怎样将rtf格式的图文混排的文档在access数据库中进行存取
- 请教:C#查询数据库结果,怎么能按拼音顺序有序的显示??
http://blog.csdn.net/bobye1230/article/details/4462696
.net中实现拖拽很简单。
比如要在一个form上拖动一个button。
private Point MouseMaggin;
private void button1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
MouseMaggin = e.Location;
button1.DoDragDrop(button1, DragDropEffects.Move);
}
} private void Form1_DragEnter(object sender, DragEventArgs e)
{
//当Button被拖拽到WinForm上时候,出现鼠标效果
if ((e.Data.GetDataPresent(typeof(Button))))
{
e.Effect = DragDropEffects.Move;
}
} private void Form1_DragDrop(object sender, DragEventArgs e)
{
MoveButton(e);
} private void MoveButton(DragEventArgs e)
{
//得到拖放对象中的Button
Button btn = e.Data.GetData(typeof(Button)) as Button;
//计算Button相对于From的X,Y坐标。否则直接使用X,Y是屏幕坐标
Point newLocation = this.PointToClient(new Point(e.X, e.Y));
newLocation.Offset(0 - MouseMaggin.X, 0 - MouseMaggin.Y);
btn.Location = newLocation;
} private void Form1_DragOver(object sender, DragEventArgs e)
{
Point currentLocation = this.PointToClient(new Point(e.X, e.Y));
currentLocation.Offset(0 - MouseMaggin.X, 0 - MouseMaggin.Y);
textBox1.Text = (currentLocation.X + "," + currentLocation.Y);
MoveButton(e);
}
要设置Form的AllowDrop=true,然后处理form的几个drop事件即可。