鼠标移动后获取winform大小以在调整大小后获得最终大小

时间:2017-04-12 18:45:23

标签: c# winforms

我试图在释放鼠标时抓取窗体的窗口大小。我可以使用事件SizeChanged,但我在那里放了一个测试,它在鼠标释放之前发射了很多次。我放了一个柜台,它在一个简单的大小调整上超过了100次点击。我想将这个'最终'大小保存到配置中,但我不希望它连续保存100次。

我的意思的一个例子:

private void CreditCardScreen_Shown(object sender, EventArgs e)
{
  Size = Properties.Settings.Default.ScreenSize;
}

private void CreditCardScreen_SizeChanged(object sender, EventArgs e)
{
  count++;
  Console.WriteLine("Count: " + count);
  // save size here
}

我最终得到了:

..
Count: 66
Count: 67
Count: 68
Count: 69
Count: 70
Count: 71
Count: 72
Count: 73
Count: 74

如何在调整大小后释放鼠标后获得最终窗口大小?

2 个答案:

答案 0 :(得分:1)

这将完成这项工作:

    public partial class Form1 : Form
    {
        Point p = new Point();

        public Form1()
        {
            InitializeComponent();
            this.ResizeEnd += Form1_ResizeEnd;
            SetDimension();
        }

        void SetDimension()
        {
            p = new Point(this.Width, this.Height);
        }

        void Form1_ResizeEnd(object sender, EventArgs e)
        {
            //check to avoid save if form was just moved...
            if (this.Width != p.X || this.Height != p.Y)
            {
                SetDimension();
                MessageBox.Show( string.Format("Width={0} Height={1}, save your settings!", this.Width, this.Height));
            }        
        }

}

答案 1 :(得分:0)

使用Form.ResizeEnd Event

  

当用户完成表单大小调整时,会引发ResizeEnd事件,通常是拖动其中一个边框或位于表单右下角的大小调整夹,然后释放它。有关调整大小操作的详细信息,请参阅ResizeBegin事件。