簡體   English   中英

如何在C#中的表單上設置對象的大小?

[英]How to set size of object on form in c#?

我在Form上有面板和Datagridview,面板用於上下滑動以顯示和隱藏其內容。

在此處輸入圖片說明

當我單擊顯示按鈕時,它將執行以下代碼:

private void button1_Click(object sender, EventArgs e)
{
    if (hidded)
    {
        button1.Visible = false;
        button2.Visible = true;
    }
    else
    {
        button1.Visible = true;
        button2.Visible = false;
    }
    timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{

    if (hidded)
    {                
        Spanel.Height = Spanel.Height + 20;
        Datagridview1.Location = new Point(23 , Datagridview1.Location.Y + 20);
        if (Spanel.Height >= 140)
        {
            timer1.Stop();
            hidded = false;
            this.Refresh();
        }
   }
   else
   {
       Spanel.Height = Spanel.Height - 20;
       Datagridview1.Location = new Point( 23, Datagridview1.Location.Y - 20);

       if (Spanel.Height <= 0)
       {
           timer1.Stop();
           hidded = true;
           this.Refresh();
       }
   }

}

當我嘗試隱藏/關閉面板時,Datagridview向上移動並變為:

在此處輸入圖片說明

我只需要從下固定錨點大小或datagridview位置。

如果您想使用計時器(使用計時器)進行操作,只需將計時器滴答事件處理程序更改為以下代碼。 它還將更改DataGridView的大小及其位置。

private void timer1_Tick(object sender, EventArgs e)
{
    if (hidded)
    {
        Spanel.Height = Spanel.Height + 20;
        Datagridview1.Location = new Point(23, Datagridview1.Location.Y + 20);
        Datagridview1.Size = new Size(Datagridview1.Width, Datagridview1.Height - 20);
        if (Spanel.Height >= 140)
        {
            timer1.Stop();
            hidded = false;
            this.Refresh();
        }
    }
    else
    {
        Spanel.Height = Spanel.Height - 20;
        Datagridview1.Location = new Point(23, Datagridview1.Location.Y - 20);
        Datagridview1.Size = new Size(Datagridview1.Width, Datagridview1.Height + 20);
        if (Spanel.Height <= 0)
        {
            timer1.Stop();
            hidded = true;
            this.Refresh();
        }
    }
}

我對這個問題的處理方式會有所不同,如果您不介意,我會在這里提出。 而不是錨定,我會使用對接來做到這一點(請參見圖波紋管)。 使用您發布的代碼,它應該可以正常工作(您的SPanel是圖片上的Panel2)。 您的表單布局 編輯#1:為了流暢地移動或調整WinForm應用程序中的控件,我建議您使用此庫: https : //github.com/UweKeim/dot-net-transitions 使用提到的庫,您的按鈕單擊事件處理程序將如下所示:

private bool resizing = false;
private void button1_Click(object sender, EventArgs e)
{
    if (resizing) 
        return;

    resizing = true;
    Transition t = new Transition(new TransitionType_Acceleration(600));
    t.TransitionCompletedEvent += (snd, ea) => { resizing = false; };
    t.add(panel2, "Height", panel2.Height == 0 ? 250 : 0);
    t.run();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM