![](/img/trans.png)
[英]c# windows form: How to match backgroundimage size to form size
[英]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.