关于C#foreach退出循环问题!
主窗体frmMain用tabControl加载窗体,实现像浏览器一样的多页面效果(暂时不想用DockPanel),已经定义了showForm函数来加载窗体,现在是打开窗体...
主窗体frmMain用tabControl加载窗体,实现像浏览器一样的多页面效果(暂时不想用DockPanel),已经定义了showForm函数来加载窗体,现在是打开窗体前的判断是否重复打开遇到点问题:
1)假设主窗体为frmMain,子窗体为f1,f2
2)这判断只对先打开的窗体有用,如先打f1,则f1可以判断得了,f2就不行,先打开f2也是如此,请教大家该怎么改这代码?刚开始接触C#,不怎么熟悉!
frmEmployerSales f = new frmEmployerSales();
if (tabControl1.TabCount > 0)
{
foreach (TabPage page in tabControl1.TabPages)
if (f.Text != page.Text)
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
showForm(f.Text, f.panel1);
f.Show();
break;
}
else
{
MessageBox.Show("该窗体已经打开!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}
else
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
showForm(f.Text, f.panel1);
f.Show();
} 展开
1)假设主窗体为frmMain,子窗体为f1,f2
2)这判断只对先打开的窗体有用,如先打f1,则f1可以判断得了,f2就不行,先打开f2也是如此,请教大家该怎么改这代码?刚开始接触C#,不怎么熟悉!
frmEmployerSales f = new frmEmployerSales();
if (tabControl1.TabCount > 0)
{
foreach (TabPage page in tabControl1.TabPages)
if (f.Text != page.Text)
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
showForm(f.Text, f.panel1);
f.Show();
break;
}
else
{
MessageBox.Show("该窗体已经打开!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}
else
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
showForm(f.Text, f.panel1);
f.Show();
} 展开
4个回答
展开全部
请参考
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
AddForm(f);
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
AddForm(f);
}
private void AddForm(Form f)
{
bool hasForm = false;
if (tabControl1.TabCount > 0)
{
foreach (TabPage page in tabControl1.TabPages)
{
if (f.Text == page.Text)
{
hasForm = true;
MessageBox.Show("该窗体已经打开!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}
}
if (!hasForm)
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
TabPage tab = new TabPage();
tab.Controls.Add(f);
tab.Text = f.Text;
this.tabControl1.Controls.Add(tab);
f.Show();
}
}
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
AddForm(f);
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
AddForm(f);
}
private void AddForm(Form f)
{
bool hasForm = false;
if (tabControl1.TabCount > 0)
{
foreach (TabPage page in tabControl1.TabPages)
{
if (f.Text == page.Text)
{
hasForm = true;
MessageBox.Show("该窗体已经打开!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
}
}
}
if (!hasForm)
{
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
TabPage tab = new TabPage();
tab.Controls.Add(f);
tab.Text = f.Text;
this.tabControl1.Controls.Add(tab);
f.Show();
}
}
展开全部
frmEmployerSales f = new frmEmployerSales();
创建对象f, 那么每次初始化的f.Text应该是相同的,所以应针对不同的窗体(f1,f2)初始化不同的Text 然后再进行判断。
可修改类frmEmployerSales的构造函数
创建对象f, 那么每次初始化的f.Text应该是相同的,所以应针对不同的窗体(f1,f2)初始化不同的Text 然后再进行判断。
可修改类frmEmployerSales的构造函数
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-12
展开全部
集合也可以</p>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询