我'我得到ArgumentException参数是无效的,有时当试图打开/显示一个新的形式为什么
本文关键字:显示 为什么 一个 ArgumentException 参数 无效 | 更新日期: 2023-09-27 18:02:44
我在Form1
中有一个pictureBox1
和一个双击事件:
private void pictureBox1_DoubleClick_1(object sender, EventArgs e)
{
pb1_fs = new Picturebox1_Fullscreen();
pictureBox1.Enabled = true;
g = last_image_file();
nf = sf + @"'radar" + g.ToString("D6") + ".gif";
lf = nf;
pb1_fs.WindowState = FormWindowState.Maximized;
pb1_fs.Show();
pb1_fs.picturebox1(pictureBox1);
pb1_fs.FormClosing += new FormClosingEventHandler(pb1_fs_FormClosing);
}
这将打开/显示新表单pb1_fs
我以前没有遇到过像现在这样的问题。
问题是一旦我双击pictureBox1
,有时会发生,有时不会,我得到
参数ArgumentException无效
我不确定问题在哪里,因为它停止并抛出异常是在Program.cs
上:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
namespace mws
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
if (IsApplicationAlreadyRunning() == true)
{
MessageBox.Show("The application is already running");
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
static bool IsApplicationAlreadyRunning()
{
string proc = Process.GetCurrentProcess().ProcessName;
Process[] processes = Process.GetProcessesByName(proc);
if (processes.Length > 1)
{
return true;
}
else
{
return false;
}
}
}
}
它停止并显示}
上的异常
这里是第二次}
关闭。
Application.Run(new Form1());
}
}
异常满消息为:
系统。ArgumentException未处理
HResult = -2147024809
消息=参数无效。
源=系统。画
加:
在System.Drawing.Image.get_RawFormat ()
在System.Drawing.Graphics。DrawImage(Image Image, Int32 x, Int32 y, Int32宽度,Int32高度)
在System.Drawing.Graphics。DrawImage(Image,矩形)
在System.Windows.Forms.PictureBox。OnPaint (PaintEventArgs pe)
在System.Windows.Forms.Control。PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
在System.Windows.Forms.Control.WmPaint (Message&米)
在System.Windows.Forms.Control.WndProc (Message&米)
在System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message&米)
在System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message&米)
在System.Windows.Forms.NativeWindow。DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
问题是什么原因导致异常,如果在form1上双击事件?或者以新的形式pb1_fs构造函数?我如何检查问题在哪里?
我可以在这里添加pb1_fs形式的构造函数代码但是它太长了
编辑:这是新表单中的方法picturebox1。在Form1中:
pb1_fs.picturebox1(pictureBox1);
将pictureBox1从Form1传递到新表单,以便在新表单中使用和显示Form1 pictureBox1中的当前图像。
public PictureBox picturebox1(PictureBox pb1)
{
pictureBox1.Image = pb1.Image;
return pictureBox1;
}
我不知道是什么错误,但会尝试移动这一行
pb1_fs.Show();
在之后所有其他初始化代码
我认为问题在这里:
public PictureBox picturebox1(PictureBox pb1)
{
pictureBox1.Image = pb1.Image;
return pictureBox1;
}
我认为你需要复制那个图像,这样你就不会在两个不同的ui元素中使用那个图像的一个实例。将代码替换为:
public PictureBox picturebox1(PictureBox pb1)
{
pictureBox1.Image = pb1.Image.Clone();
return pictureBox1;
}
我还将Show()方法移到
下面:pb1_fs.FormClosing += new FormClosingEventHandler(pb1_fs_FormClosing);
这条线