我有一個TabControl,它以三個TabPages開始。在第一個選項卡上有一個NumericUpDown(微調),它顯示標籤的數量,並允許用戶添加多達10個額外的標籤。一旦它們添加超過5或6,它將超出表格的寬度,其餘的標籤可以通過頂部的幾個左/右箭頭訪問。當一直走到右側,然後使用微調器回到0(移除所有額外的選項卡並保留開始的三個選項卡)時,它將從窗格頂部刪除所有選項卡,並且只需將微調器設置回1它會刷新並顯示全部4個(從開始加3個微調器)。 我已經試過的 Application.DoEvents()
this.Refresh()
this.Invalidate()
this.Update()
幾個commbinations但似乎沒有任何工作。任何人都可以提出一個不更新/刷新的原因嗎?tabcontrol不刷新
public partial class Form1 : Form
{
TabPage[] tabs;
public Form1()
{
InitializeComponent();
tabs = new TabPage[tabControl1.Controls.Count];
tabs[0] = tabPage1;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
int numTabs = tabControl1.Controls.Count;
decimal spinnerValue = numericUpDown1.Value;
if (numTabs < spinnerValue) //add a tab
{
TabPage[] newTabs = new TabPage[(int)spinnerValue];
for (int i = 0; i < numTabs; i++)
{
newTabs[i] = tabs[i];
}
TabPage tab = new TabPage("Tab " + numTabs);
newTabs[(int)spinnerValue-1] = tab;
tabControl1.Controls.Add(tab);
tabs = newTabs;
}
else //remove a tab
{
TabPage[] newTabs = new TabPage[(int)spinnerValue];
for (int i = 0; i < spinnerValue; i++)
{
newTabs[i] = tabs[i];
}
tabControl1.Controls.Remove(tabs[(int)spinnerValue]);
tabs = newTabs;
}
}
}
你的代碼是什麼樣的?聽起來像你有2個問題其中之一是SelectedIndex問題和其他DoEvents()不使用.. 也許你可以看看BeginInvoke if(tabControl1.SelectedIndex == 1){this.BeginInvoke(new Action (()=> tabControl1.SelectTab(0))); – MethodMan
爲什麼會出現selectedindex問題? – user1584120
我在黑暗中沒有任何代碼刺傷,看看你是怎麼做的......任何人都很難給出一個具體的答案..我會建議發佈一些代碼 – MethodMan