在通过反复试验找到违规行之后,修改问题以问为什么。答案的提示表明在表单加载后发生了一些事情。我找到了一个行设置tabControl1.SelectedIndex = 1; tabPage2索引也是1,那为什么选择tabPage2呢?将1更改为0后,所有内容都会正确显示。
我无法在tabControl上找到白皮书或教程并使用SelectedIndex,那么有人可以告诉我这是如何工作的吗?
private void Form1_Load(object sender, EventArgs e)
{
getRegions();
tabControl1.SelectedIndex = 1;
我有一个Windows窗体,tabControl1上有10个tabPages。需求的变化需要除2&之外的所有要求。 8.在删除任何tabPages之前,tabPage2和启动时显示的表单。我可以毫无问题地删除3,4,5,6,7,9,10(剩下1,2,8)。如果我删除tabPage1,启动时显示的tabPage和表单是tabPage8。这是tabPage2,我希望它保持这种状态。
我已经打了几个星期这样打了很久,我很难过。我似乎无法找到描述这一点的任何文章或问题。我发现了多个建议来添加这个.tabControl1.SelectedTab = tabPage2;这似乎没什么用。
可能导致此问题的原因以及我需要做什么? (我真的不知道我需要粘贴哪些代码,如果需要更多,请告诉我)
// tabControl1
//
this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Controls.Add(this.tabPage8);
this.tabControl1.Location = new System.Drawing.Point(13, 27);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 1;
this.tabControl1.Size = new System.Drawing.Size(963, 483);
this.tabControl1.TabIndex = 1;
this.tabControl1.SelectedTab = tabPage2;
// tabPage1
//
this.tabPage1.Location = new System.Drawing.Point(4, 22);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(955, 457);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "Region Overall Status";
this.tabPage1.UseVisualStyleBackColor = true;
//
// tabPage2
//
this.tabPage2.Controls.Add(this.lstBuildList);
this.tabPage2.Controls.Add(this.label9);
this.tabPage2.Controls.Add(this.label8);
this.tabPage2.Controls.Add(this.lblFileLookUp);
this.tabPage2.Controls.Add(this.btnFileLookUp);
this.tabPage2.Controls.Add(this.cbRegion);
this.tabPage2.Controls.Add(this.tabControl2);
this.tabPage2.Controls.Add(this.tvFileMan);
this.tabPage2.Controls.Add(this.txtFileLookUp);
this.tabPage2.Controls.Add(this.cbRegionSites);
this.tabPage2.Location = new System.Drawing.Point(4, 22);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(955, 457);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "Build Attribute Maps from Vista Files";
this.tabPage2.UseVisualStyleBackColor = true;
this.tabPage2.Click += new System.EventHandler(this.tabPage2_Click);
// tabPage8
//
this.tabPage8.Location = new System.Drawing.Point(4, 22);
this.tabPage8.Name = "tabPage8";
this.tabPage8.Padding = new System.Windows.Forms.Padding(3);
this.tabPage8.Size = new System.Drawing.Size(955, 457);
this.tabPage8.TabIndex = 0;
this.tabPage8.Text = "Edit Attribute Map/ Create SQL Tables from Attribute Map";
this.tabPage8.UseVisualStyleBackColor = true;
this.tabPage8.Click += new System.EventHandler(this.tabPage8_Click);
this.tabControl1.SelectedTab = tabPage2;
//
答案 0 :(得分:2)
您可以在InitializeComponent之后或在Form_Load之后选择标签页以在启动时显示。
这是我测试的示例代码
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Select tabpage after initialize
tabControl1.SelectedTab = tabPage3;
}
private void Form1_Load(object sender, EventArgs e)
{
//You can select it at form load or at some other action also like a button click
//tabControl1.SelectedTab = tabPage3;
}
}
}
不要在设计师处写任何代码。始终在InitializeComponent调用之后写入。
答案 1 :(得分:0)
首先是Windows窗体设计器的软件,因为它经常隐藏在进行更改时您没有预料到的更改。 :)
你可以尝试的一件事是将this.tabControl1.SelectedTab移动到InitializeComponent方法之外(我假设你有一个)。有时BeginInit / EndInit调用会产生奇怪的副作用。