找回密码
 立即注册

QQ登录

只需一步,快速开始

Tachiro

高级会员

31

主题

90

帖子

1251

积分

高级会员

积分
1251

圣诞拼拼乐微信认证勋章

Tachiro
高级会员   /  发表于:2021-6-14 16:49  /   查看:2460  /  回复:3
本帖最后由 Tachiro 于 2021-6-15 19:14 编辑

  1. //Form
  2. ApplyLanguageInfo(this);

  3. //Class
  4. public static void ApplyLanguageInfo(Form frmForm)
  5. {
  6.     var sonControls = frmForm.Controls;

  7.     foreach (Control control in sonControls)
  8.     {
  9.         if (control.GetType().Name == "C1SplitButton")
  10.         {
  11.             //下方这个 foreach 要怎样写,才能够取得所有的 DropDownItem?
  12.             foreach (Control items in ((C1SplitButton)control).Controls)
  13.             {
  14.                 //我想要置换每一个 Item 的名称
  15.                 items.Text = GetLanguageString(items.Text, "form", frmForm.Name, "object", items.Name, "Text");
  16.             }
  17.         }
  18.     }
  19. }
复制代码


目前使用到的 C1 控件,就只有 C1SplitButton 无法取得它的所有 Items

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-15 09:36:17
沙发
C1SplitButton中的DropDownItem是可以无限向下分出多层的 子菜单的,可以用递归方法来获取所有的

  1.         //获取C1SplitButton中所有的item
  2.         public void getAllItem(C1SplitButton c1sbtn)
  3.         {
  4.             foreach (DropDownItem item in c1sbtn.Items)
  5.             {
  6.                 getItems(item);
  7.             }
  8.         }

  9.         //递归获取所有的item
  10.         public void getItems(DropDownItem dpitem) {
  11.             foreach(DropDownItem item in dpitem.Items)
  12.             {
  13.                 Console.WriteLine(item.Text);
  14.                 getItems(item);
  15.             }
  16.         }
复制代码
回复 使用道具 举报
Tachiro
高级会员   /  发表于:2021-6-15 19:31:28
板凳
本帖最后由 Tachiro 于 2021-6-15 19:37 编辑

谢谢 Richard.Ma,您提供的范例解决我的问题了!

我的代码修正如下:
  1. if (control.GetType().Name == "C1SplitButton")
  2. {
  3.     //下方这个 foreach 改写后,已经可以取得所有第一层的 DropDownItem 了!(我只要第一层即可)
  4.     foreach (DropDownItem dropDownItems in ((C1SplitButton)child11).Items)
  5.     {
  6.         foreach (DropDownItem item in dropDownItems.SplitButton.Items)
  7.         {
  8.             //因为无法取得 item.Name,所以用 item.Tag 代替
  9.             item.Text = GetLanguageString(item.Text, "form", frmForm.Name, "object", item.Tag.ToString(), "Text");
  10.         }
  11.     }
  12. }
复制代码



回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-16 09:43:57
地板
好的,不客气,也感谢您分享代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部