Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我最小化表单时图像消失,滚动不';不显示_C#_Winforms_Graphics_Drag And Drop_Panel - Fatal编程技术网

C# 当我最小化表单时图像消失,滚动不';不显示

C# 当我最小化表单时图像消失,滚动不';不显示,c#,winforms,graphics,drag-and-drop,panel,C#,Winforms,Graphics,Drag And Drop,Panel,我在下面编写了拖放代码。当我将图像拖到面板中时,它会被添加,但当我最小化表单时,它会消失。(这是一个C#windows表单应用程序) 1st:原因是什么? 2nd:我如何修复它? 我设置了panel1 auto scroll属性并将allow drop设置为true,但当图像大于表单大小时,不会显示滚动。 3rd:我如何解决scroll的问题 private void panel1_DragEnter(object sender, DragEventArgs e) { e.Effect

我在下面编写了拖放代码。当我将图像拖到面板中时,它会被添加,但当我最小化表单时,它会消失。(这是一个C#windows表单应用程序)
1st:原因是什么?
2nd:我如何修复它?
我设置了panel1 auto scroll属性并将allow drop设置为true,但当图像大于表单大小时,不会显示滚动。
3rd:我如何解决scroll的问题

private void panel1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.All;
}

private void panel1_DragDrop(object sender, DragEventArgs e)
{
    string[] imagePath =(string[]) e.Data.GetData(DataFormats.FileDrop);
    Graphics g = panel1.CreateGraphics();
    g.DrawImage(Image.FromFile(imagePath[0]), new Point(0, 0));
}

显示图像文件最简单的方法可能是将其加载到PictureBox中。这样,您就不必担心通过重新绘制来保持它

要实现这一点,只需将代码更改为

string[] imagePath;

private void panel1_DragDrop(object sender, DragEventArgs e)
{
  imagePath = (string[]) e.Data.GetData(DataFormats.FileDrop);
  if (imagePath.Length > 0 )   pictureBox1.ImageLocation = imagePath[0];
}
您可能希望添加错误处理以捕获错误的文件类型

要解决滚动问题,请将PictureBox放在面板内,并编写
LoadCompleted
事件脚本:

private void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
    pictureBox1.ClientSize = pictureBox1.Image.Size;
}

面板需要将
AutoScroll
设置为true,PictureBox应位于
位置
0;0并具有
SizeMode
Normal。不要
Dock
PictureBox,也不要
Anchor
将其拉伸!您可以
Dock
Anchor
随心所欲地定位面板。

在许多其他操作中,您可能需要重复的操作,当然,您需要缓存的不是“绘制操作”,而是文件名。或者去买一个图片盒。要使滚动条不显示在图像中,但面板必须大于窗体。还可以查看在面板中嵌套面板(或图片盒)的技巧。嵌套控件的大小是为了显示图像的完整大小,外部设置为Autoscroll。你能解决你的问题吗?不,我已经可以使用picture box,但我尝试使用图像绘制,似乎无法实现。你对我昨天问的这篇文章有什么回答吗?没有。添加扩展名可能会有所帮助。