【问题标题】:Picturebox tick event behaving inconsistently图片框勾选事件的行为不一致
【发布时间】:2016-01-22 11:31:41
【问题描述】:

所以最近我在 C 中花了很多时间后,一直在尝试进入 C# 编程。 我自然而然地开始学习一些新事物,在这种情况下,我想尝试一些形式、课程和活动——简单吧?

显然不是,我傻眼了,我一直在运行程序,一步一步分析,tick事件按预期触发,但是picturebox中的图片没有更新。

这是最重要的,我制作了一个运行几乎相同代码的按钮,并且有效,有什么用?我几乎无法理解它的现状。

http://pastebin.com/psYzQSLE - 这是我目前正在运行的代码。

这是我无法正常运行的特定代码段。

private void timer1_Tick(object sender, EventArgs e)
    {
        if(swapper)
        {
            swapper = false;
            pictureBox1.Image = ima1;
            pictureBox1.Refresh();
        }
        else
        {
            swapper = true;
            pictureBox1.Image = ima2;
            pictureBox1.Refresh();
        }
    }

【问题讨论】:

  • 欢迎来到 SO!将所有相关代码放在Editing它的问题中,然后写下你的问题到底是什么。
  • 为什么交换器变量是静态的?我猜你没有连接 Load 事件。只需将“主要”代码放入表单的构造函数中即可。
  • @Mathemats,OP 确实放了他认为相关的代码......但我认为问题出在其他地方。
  • @LarsTech 感谢您的提示,我一直在胡思乱想,也许 bool 在我不知道怎么做的情况下被改变了,所以我在那里让它静止了一会儿,它已经被改回来了。 - 我移动了主要代码。只是有点习惯在 C 中使用 Main。整个代码都在链接中。
  • 您的代码,否则,如发布的那样,有效。

标签: c# forms events timer


【解决方案1】:

您的代码看起来不错,并且对我有用。我怀疑Form1_Load 方法没有连接到表单的Loaded 事件;您可以在设计器中检查。

【讨论】:

  • 我的设计器中有一行写着,没有说“加载”:this.Load += new System.EventHandler(this.Form1_Load);
  • @Nodine,是的,我的意思是 Load 当然(WPF 中的等效事件被命名为 Loaded 所以它让我感到困惑......)
【解决方案2】:

好的,我想通了! 由于对设计文档不熟悉,因此将计时器添加到那里的刻度中,我自己也在代码中添加了它,结果是一个立即触发两次的计时器,因此我没有看到任何结果。

问题已经解决,感谢您的热情欢迎:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多