J'ai un TabControl qui commence par trois TabPages. Sur le premier onglet, il y a un NumericUpDown (spinner) qui affiche le nombre d'onglets et permet à un utilisateur d'ajouter jusqu'à 10 onglets supplémentaires. Une fois qu'ils ajoutent plus d'environ 5 ou 6, il dépasse la largeur du formulaire et le reste des onglets est accessible par quelques flèches gauche/droite en haut. En allant tout à fait vers la droite, puis en utilisant la roulette pour redescendre à 0 (en supprimant tous les onglets supplémentaires et en laissant les trois premiers), elle supprime tous les onglets du haut du volet et seulement en remettant la roulette à 1 Est-ce qu'il rafraîchit et affiche tous les 4 (3 à partir du début, plus 1 à partir du spinner). J'ai essayé plusieurs commbinations de Application.DoEvents()
this.Refresh()
this.Invalidate()
this.Update()
, mais rien ne semble fonctionner. Quelqu'un peut-il suggérer une raison pour laquelle il n'est pas mise à jour/rafraîchissante?tabcontrol non rafraîchissant
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;
}
}
}
À quoi ressemble votre code? semble que vous avez 2 questions l'un d'eux étant SelectedIndex problème et les autres DoEvents() ne l'utilisent pas .. peut-être vous pouvez regarder BeginInvoke si (tabControl1.SelectedIndex == 1) { this.BeginInvoke (nouvelle Action (() => tabControl1.SelectTab (0))); – MethodMan
pourquoi y aurait-il un problème selectedindex? – user1584120
Je prends un coup dans le noir sans aucun code pour voir comment vous faites les choses ... il est difficile pour quiconque de donner une réponse concrète .. Je suggérerais de poster du code – MethodMan