找回密码
 立即注册

QQ登录

只需一步,快速开始

sgs

中级会员

74

主题

219

帖子

637

积分

中级会员

积分
637

活字格认证微信认证勋章

sgs
中级会员   /  发表于:2014-9-26 09:06  /   查看:5957  /  回复:5
按以下步骤操作:

1. 新建Form1
2. 拖曳Navbar控件和TileControl到Form1
3. 添加Form1_Load事件
  1.             this.c1NavBar1.Panels.Clear();
  2.             C1NavBarPanel navPnl;
  3.             for (int i = 0; i < 4; i++)
  4.             {
  5.                 navPnl = new C1NavBarPanel();
  6.                 navPnl.Name = i.ToString();
  7.                 navPnl.PanelVisible = true;
  8.                 navPnl.Button.Text = i.ToString();
  9.                 navPnl.Button.PanelHeader = i.ToString();
  10.                 this.c1NavBar1.Panels.Add(navPnl);
  11.             }
复制代码

4. 添加c1NavBar1_SelectedPanelChanged事件
  1.             //如果注释此事件代码 ,则navbar显示正常
  2.             Group gp = this.c1TileControl1.Groups[0];
  3.             gp.Text = this.c1NavBar1.SelectedPanel.Button.Text;
  4.             gp.Tiles.Clear();

  5.             for (int i = 0; i < 4; i++)
  6.             {
  7.                 Tile tl = new Tile();
  8.                 tl.Name = i.ToString();
  9.                 tl.Text = gp.Text + i.ToString();
  10.                 tl.BackColor = System.Drawing.Color.Blue;
  11.                 tl.ForeColor = System.Drawing.Color.Black;
  12.                 gp.Tiles.Add(tl);
  13.             }
复制代码

5. F5运行,发现c1NavBar1无法显示新增的页面,如果注释掉4中的事件代码,则运行正常

请问这是不是个Bug?如何解决这个问题?

补充一下测试环境:win7旗舰版+vs2010+C12014V2

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-9-26 10:41:00
沙发
回复 1楼sgs的帖子

你好。
我也是按照你提示的步骤进行操作,并未重现该问题。
在FormLoad事件里添加步骤3的代码,并在这段代码之后调用C1NavBar1_SelectedPanelChanged事件。
随后添加步骤4代码。
不知道你还有什么其他的操作么?
如果不一样请将代码发上来。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
sgs
中级会员   /  发表于:2014-9-26 11:44:00
板凳

见附件

我发现一个现象
this.c1NavBar1.SelectedPanelChanged += new EventHandler(c1NavBar1_SelectedPanelChanged);
这个代码如果放在设计器中,就出现了我提到的问题,如果放在form_load中,就正常,请帮忙测试下。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-9-26 14:17:00
地板
回复 3楼sgs的帖子

你是不是将VisualStudio有关异常捕捉都关闭了,我的环境运行这个示例会报错。

如Sample所演示的,在设计器初始化C1NavBar的时候调用SelectedPanelChanged事件,初始化的时候会触发这个事件。但由于Form并未Load,C1NavBar里面还没有添加Panel,所以这句代码会报错,gp.Text = this.c1NavBar1.SelectedPanel.Button.Text;

所以有两种解决方法:
1.如我之前所说,FormLoad事件里,在所有Panel都添加完成后再调用该事件。
2.在p.Text = this.c1NavBar1.SelectedPanel.Button.Text;这句代码加一个判断条件,比如C1NavBar.SelectedPanel不是Null的时候,才执行这句代码。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
sgs
中级会员   /  发表于:2014-9-26 15:22:00
5#
OK,根据4楼第一种方法已经圆满解决,非常感谢解答,此贴可结贴了。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-9-26 18:08:00
6#
回复 5楼sgs的帖子

好的。欢迎评分。

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部