我'我得到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;
}

我'我得到ArgumentException参数是无效的,有时当试图打开/显示一个新的形式为什么

我不知道是什么错误,但会尝试移动这一行

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);
这条线