private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = (ListViewItem)e.Item; string itemName = item.Text; listView1.DoDragDrop(itemName, DragDropEffects.Copy); }如果将listview中的值比如111拖拽到icturebox上并且使用drawstring的方法显示出来后,如何在picturebox上继续拖拽移动111,代码该如何实现
时间: 2023-05-20 08:04:15 浏览: 87
您可以在picturebox的MouseMove事件中获取鼠标的位置,然后使用Graphics对象的DrawString方法在picturebox上重新绘制111。在picturebox的MouseUp事件中,您可以将111的新位置保存下来。在picturebox的MouseMove事件中,您可以根据鼠标的位置计算出111的新位置,并将其绘制在picturebox上。以下是示例代码:
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
// 计算111的新位置
int newX = e.X;
int newY = e.Y;
// 绘制111
Graphics g = pictureBox1.CreateGraphics();
g.DrawString("111", Font, Brushes.Black, newX, newY);
// 保存111的新位置
// TODO: 将新位置保存到适当的变量中
}
}
请注意,这只是一个简单的示例代码,您需要根据您的具体需求进行修改。
相关问题
private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = (ListViewItem)e.Item; string itemName = item.Text; listView1.DoDragDrop(itemName, DragDropEffects.Copy); }如果将listview中的值拖拽到picturebox上并且使用drawstring的方法显示出来后,如何在picturebox上继续拖拽移动?代码该如何实现
您可以在picturebox的MouseMove事件中获取鼠标的位置,然后使用Graphics对象的DrawString方法将文本绘制到picturebox上。在picturebox的MouseDown事件中,您可以使用DoDragDrop方法开始拖拽操作。在picturebox的DragOver事件中,您可以更新拖拽操作的位置。最后,在picturebox的DragDrop事件中,您可以完成拖拽操作。以下是示例代码:
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
string itemName = (string)pictureBox1.Tag;
if (!string.IsNullOrEmpty(itemName))
{
Graphics g = pictureBox1.CreateGraphics();
g.DrawString(itemName, Font, Brushes.Black, e.Location);
g.Dispose();
}
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
string itemName = (string)pictureBox1.Tag;
if (!string.IsNullOrEmpty(itemName))
{
pictureBox1.DoDragDrop(itemName, DragDropEffects.Copy);
}
}
}
private void pictureBox1_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(string)))
{
e.Effect = DragDropEffects.Copy;
}
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(string)))
{
string itemName = (string)e.Data.GetData(typeof(string));
pictureBox1.Tag = itemName;
}
}
将listview上的数据拖拽到picturebox上,并且可以选择鼠标落下的位置为拖拽的位置,我们需要通过计算拖拽到picturebox上的数据大小,来实现放在想要放置的地方,代码该如何实现。 private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = (ListViewItem)e.Item; string itemName = item.Text; listView1.DoDragDrop(itemName, DragDropEffects.Copy); }
private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
}
private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
var point = pictureBox1.PointToClient(new Point(e.X, e.Y));
string itemName = (string)e.Data.GetData(DataFormats.Text);
ListViewItem item = listView1.FindItemWithText(itemName);
if (item != null)
{
long fileSize = new FileInfo(itemName).Length;
int width = Math.Min(pictureBox1.Width, Math.Max(10, (int)(fileSize / 1024)));
int height = Math.Min(pictureBox1.Height, Math.Max(10, (int)(fileSize / 1024)));
Bitmap bmp = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.White);
g.DrawString(itemName, new Font("Arial", 10), Brushes.Black, new RectangleF(0, 0, width, height), new StringFormat { Alignment = StringAlignment.Center });
}
point.X = Math.Min(point.X - width / 2, pictureBox1.Width - width);
point.Y = Math.Min(point.Y - height / 2, pictureBox1.Height - height);
point.X = Math.Max(point.X, 0);
point.Y = Math.Max(point.Y, 0);
pictureBox1.BackgroundImage = bmp;
pictureBox1.Location = point;
}
}
阅读全文