3 つの TabPages で始まる TabControl があります。最初のタブには NumericUpDown (スピナー) があり、タブの数が表示され、ユーザーは最大 10 個のタブを追加できます。約 5 つまたは 6 つ以上追加すると、フォームの幅を超えてしまい、残りのタブには上部の左右の矢印でアクセスできます。右端まで移動してからスピナーを使用して 0 に戻ると (余分なタブをすべて削除し、最初の 3 つを残す)、スピナーを 1 に戻すことによってのみ、ペインの上部からすべてのタブが削除されます。更新して4つすべてを表示しますか(最初の3つとスピナーの1つ)。のいくつかの組み合わせを試しまし
Application.DoEvents()
this.Refresh()
this.Invalidate()
this.Update()
たが、何も機能しないようです。更新/更新されていない理由を誰かが提案できますか?
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;
}
}
}