当以编程方式单击时,为什么我的表单不会调整大小,但实际点击时会是什么?

时间:2015-10-12 19:59:40

标签: c# .net winforms

我正在尝试创建一个允许驻留时间点击的.NET应用程序。这部分已经实施,并且通常以您期望的方式运作。

这是控制我的自定义控件中的停留时间的计时器:

private void dwellTimeEvent(object sender, ElapsedEventArgs e)
{
    gr.FillRectangle(new SolidBrush(Color.FromArgb(127,128,128,128)), new Rectangle(0, this.Height - heightCounter, this.Width, this.Height / elapseDivide));

    if (heightCounter > this.Height * 12 / 10)
    {
        //this.ALSButton_Click(sender, e); // calls the click event programmatically rather than through an actual click
        this.OnClick(e);

    }
    else
    {
        heightCounter += this.Height / elapseDivide;
    }
}

这是调用上面自定义控件的click事件的主GUI表单:

private void setBut_Click(object sender, EventArgs e)
{
    MessageBox.Show("Debug"); //make sure this method is being called
    this.WindowState = FormWindowState.Maximized;//this doesn't work with dwell timing and I don't know why
    /*this.Invalidate();
    this.Update();
    this.Refresh();
    Application.DoEvents();*/
}  

我在评论中展示了我尝试的所有不同的东西。消息框出现点击或等待计时器到期,但表单不会最大化,除非我实际点击它(而不是让计时器运行)。我真的很困惑为什么会这样。

另一个奇怪的事情是,每当我尝试使用断点调试它时,它就像我预期的那样工作;停留时间使形式最大化。这让我相信GUI可能并不令人耳目一新,所以我尝试了上面所有不同的命令(无效,刷新等),但没有一个有效果。

1 个答案:

答案 0 :(得分:0)

确保您使用的是System.Windows.Forms.Timer而不是System.Timers.Timer