【问题标题】:How to refresh picturebox with program.cs?如何使用 program.cs 刷新图片框?
【发布时间】:2013-10-20 20:19:16
【问题描述】:

Program.cs 代码:

namespace _1
    {
     static class Program
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    /// 
    public static Form2 form2;
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
        form2 = new Form2();

    }
}

Form1 代码:

Program.form2.pictureBox1.Refresh();

错误:

Object reference not set to an instance of an object.

不知道为什么会出现错误,我已经问过谷歌,但没有任何帮助。 感谢您的帮助。

【问题讨论】:

  • 对象引用未设置为对象的实例。当您尝试访问而不初始化/分配任何值时发生错误。
  • 到底想做什么?
  • Miller Koijam:我确实分配了值 form2 = new Form2();
  • 把 form2 = new Form2() 放在 Application.Run(new Form1()) 之前
  • NullReferenceException 的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。

标签: c# winforms nullreferenceexception


【解决方案1】:

您收到NullReferenceException,这通常发生在您尝试访问没有引用的对象时。一般来说,当对象为null时。

在这种情况下,form2null

Application.Run 是一个阻塞调用。当您调用此方法时,它会打开传入参数的表单并保持阻塞状态,直到表单关闭。所以,

form2 = new Form2();

这行代码没有执行,你得到一个空的form2。您可以通过简单地还原这样的行来解决问题,

form2 = new Form2();
Application.Run(new Form1());

【讨论】:

    【解决方案2】:

    你在form2 = new Form2();之前调用Application.Run(new Form1());

    你需要把form2 = new Form2(); 之前 Application.Run(new Form1());

    我假设您的刷新代码是从该 Form1 实例调用的。

    【讨论】:

    • 我这样做了,但它仍然说“form2”为空。
    【解决方案3】:
    Object reference not set to an instance of an object.
    

    表示对象是null,或未分配。

    运行时悬停在变量上或使用断点,检查mapmap.pictureBox1是否为null

    您需要确保在使用之前将map 设置为某个值,并且根据给定的代码,我无法给出错误的具体原因。

    【讨论】:

    • 因为我在 program.cs 中将 map 设置为某些东西,所以它应该有那个错误。 map 无论如何都是空的,所以我不知道该怎么做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2015-03-04
    相关资源
    最近更新 更多