关于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();

}
展开
 我来答
平梦醉神风1I
2011-08-12 · TA获得超过1510个赞
知道小有建树答主
回答量:691
采纳率:0%
帮助的人:1033万
展开全部
请参考

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();
}
}
youway0761
2011-08-12
知道答主
回答量:2
采纳率:0%
帮助的人:3.1万
展开全部
frmEmployerSales f = new frmEmployerSales();
创建对象f, 那么每次初始化的f.Text应该是相同的,所以应针对不同的窗体(f1,f2)初始化不同的Text 然后再进行判断。

可修改类frmEmployerSales的构造函数
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汤哥TLC
2011-08-12
知道答主
回答量:39
采纳率:100%
帮助的人:10.5万
展开全部
学习下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-12
展开全部
集合也可以</p>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式