private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = (ListViewItem)e.Item; string itemName = item.Text; listView1.DoDragDrop(itemName, DragDropEffects.Copy); }如果将listview中的数据拖拽到icturebox上并且使用drawstring的方法显示出来后,在picturebox上继续拖拽移动数据,保存该数据的新位置后如何存到适当的变量,代码该如何实现
时间: 2023-05-20 11:04:43 浏览: 96
您可以在picturebox的MouseMove事件中获取鼠标的位置,然后根据该位置计算出数据应该被放置的位置,最后将数据存储到适当的变量中。以下是示例代码:
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
string itemName = (string)pictureBox1.Tag;
if (!string.IsNullOrEmpty(itemName))
{
// 计算数据应该被放置的位置
int x = e.X;
int y = e.Y;
// 存储数据到适当的变量中
// ...
}
}
}
请注意,此示例代码仅供参考,具体实现可能需要根据您的具体需求进行调整。
相关问题
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;
}
}
阅读全文