找回密码
 立即注册

QQ登录

只需一步,快速开始

pjsLucky
论坛元老   /  发表于:2012-12-27 17:35  /   查看:12164  /  回复:11
silverlight的 GcSpreadSheet控件放到ChildWindow无法切换Sheet页

11 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-27 18:18:00
沙发
pjsLucky

该问题我会在调查之后,明天给你回复。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-28 11:57:00
板凳
回复 1楼pjsLucky的帖子

pjsLucky 你好

Spread WPF-Silverlight本身设计时不支持这样的使用方式,不过可以尝试使用以下方法来解决这一问题
  1. this.gcSpreadsheet1.MouseLeftButtonDown += OnGcSpreadsheetMouseLeftButtonDown;
  2. private void gcSpreadsheet1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  3. {
  4. SheetTab sheetTab = null;
  5. var popups = VisualTreeHelper.GetOpenPopups();
  6. if (popups != null && popups.Count() > 0)
  7. {
  8. foreach (var popup in popups)
  9. {
  10. if (popup.Child is ChildWindow)
  11. {
  12. var point = e.GetPosition(popup.Child);
  13. var hitElements = VisualTreeHelper.FindElementsInHostCoordinates(point, popup).ToList<UIElement>();
  14. if (hitElements == null || hitElements.Count == 0)
  15. return;
  16. foreach (var element in hitElements)
  17. {
  18. if (element is SheetTab)
  19. {
  20. sheetTab = (SheetTab)element;
  21. break;
  22. }
  23. }
  24. }
  25. }
  26. }
  27.  
  28. if (sheetTab != null)
  29. {
  30. if (sheetTab.SheetIndex >= 0)
  31. {
  32. this.gcSpreadsheet1.ActiveSheetIndex = sheetTab.SheetIndex;
  33. }
  34. else //Click on the New sheettab, insert a new worksheet and set the index to the new added sheet.
  35. {
  36. this.gcSpreadsheet1.Workbook.Sheets.Insert(this.gcSpreadsheet1.SheetCount, new GrapeCity.Windows.SpreadSheet.Data.Worksheet());
  37. this.gcSpreadsheet1.ActiveSheetIndex = this.gcSpreadsheet1.SheetCount - 1;
  38. }
  39. }
  40. }
复制代码
回复 使用道具 举报
zyd200888
新手上路   /  发表于:2012-12-28 13:09:00
地板
为什么测版的可以,正试版的就不行了
回复 使用道具 举报
Zoe
银牌会员   /  发表于:2012-12-28 13:28:00
5#
回复 4楼zyd200888的帖子

您好:
      请问您使用的测试版的版本号和正式版的版本号分别是多少?方便我们重现您说的问题。
回复 使用道具 举报
pjsLucky
论坛元老   /  发表于:2013-1-4 10:32:00
6#
回复 5楼Zoe的帖子

试用版是1.0.0.0,正式版是1.0.4.0
1.0.0.0是没有这个问题的
回复 使用道具 举报
pjsLucky
论坛元老   /  发表于:2013-1-4 14:13:00
7#
回复 3楼dof的帖子

我用了你这个方法之后Sheet页下面的名字就无法重命名了
回复 使用道具 举报
jackshang
初级会员   /  发表于:2013-1-4 14:32:00
8#
是的, 我们给你提供的方法只能让您可以通过鼠标点击来切换ActiveSheet, 无法双击进入编辑状态后重命名Sheet.
回复 使用道具 举报
pjsLucky
论坛元老   /  发表于:2013-1-4 15:20:00
9#
回复 8楼jackshang的帖子

有没有其他办法呢?
回复 使用道具 举报
jackshang
初级会员   /  发表于:2013-1-4 16:04:00
10#
目前Spread WPF-Silverlight对ChildWindow的支持不是很完善, 我们给您提供的方法只能帮您解决切换ActiveSheet的问题.  如果您必须在ChildWindow中支持重命名sheet的话, 您可以在外面自己写代码设置WorkSheet.Name属性的方法来做.
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部