private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
switch ((sender as TabControl).SelectedIndex)
{
case 0:
var formBig = new FormBig();
formBig.FormBorderStyle = FormBorderStyle.None;
formBig.TopLevel = false;
formBig.Visible = true;
formBig.Top = 0;
formBig.Left = 0;
tabPage1.Controls.Add(formBig);
tabPage1.Show();
break;
case 1:
//do page1
break;
case 2:
//do page2
break;
}
}
股票程式寫了一些
零零散散的寫了各種Form
包括大盤顯示、今日排行過濾、收藏、對帳單等
每次測試都是在Main()裡面調整要呼叫的Form打開來看
切換效率很差,又要一直改程式
於是今天把所有的Form整合成一個大Form
第1個Tab顯示大盤走勢
第2個Tab是我個人蒐藏的個股
第3個Tab顯示虛擬自動程式交易的對帳單,未來下面要放報酬率圖表
拉一個tabControl近來,調整大小
預設會給兩個tabPage,看實際需要幾個tab就增加幾個索引標籤
產生SelectedIndexChanged方法
- 選取tabControl1
- 打開事件屬性
- 在SelectedIndexChanged右邊的空白處點兩下,然後就會自動產生SelectedIndexChanged方法
先確認每個tab要做的事兒與呼叫的form
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
switch ((sender as TabControl).SelectedIndex)
{
case 0:
//顯示大盤走勢form
break;
case 1:
//顯示收藏個股form
break;
case 2:
//顯示歷史對帳單form
break;
}
}
然後把實際呼叫form的方法寫在case中,說明如下
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
switch ((sender as TabControl).SelectedIndex)
{
case 0:
var formBig = new FormBig();
//不要顯示Title
formBig.FormBorderStyle = FormBorderStyle.None;
//非最上層
formBig.TopLevel = false;
//顯示From,要加上去才會顯示Form
formBig.Visible = true;
//設定From位置
formBig.Top = 0;
formBig.Left = 0;
//將Form加入tabPage中
tabPage1.Controls.Add(formBig);
//顯示tabPage
tabPage1.Show();
break;
case 1:
//do page1
break;
case 2:
//do page2
break;
}
}
其中有幾個設定特別重要
//非最上層
formBig.TopLevel = false;
formBig.Visible = true;
沒有設定formBig.TopLevel = false,是沒有辦法把Form加到tabPage中的
會發生System.ArgumentException: '無法將最上層控制項加入控制項。'
沒有設定formBig.Visible = false,會看不到Form
至於其他的就是一些UI的位置跟要不要顯示而已
沒有留言:
張貼留言