请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

dawnwind

初级会员

10

主题

43

帖子

396

积分

初级会员

积分
396
dawnwind
初级会员   /  发表于:2017-5-12 10:27  /   查看:3876  /  回复:4
如题,WPF 版, c1:C1FlexGrid的某一列内容允许输入一位数字,有没有类似于MaxInputLength = 1 这样的属性可以在前台设定?
Winform版有这样的属性,WPF版对应的属性是什么,急。

6 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2017-5-12 17:20:13
沙发
不好意思回复晚了。
列上是没有这个属性的,但是列可以设置不同的DataTemplate,你可以放不同类型的控件上去。
比如你放了TextBox,它本身就有MaxLength属性。
  1.         <c1:Column>
  2.                     <c1:Column.CellTemplate>
  3.                         <DataTemplate>
  4.                             <TextBox MaxLength="5"></TextBox>
  5.                         </DataTemplate>
  6.                     </c1:Column.CellTemplate>
  7.                 </c1:Column>
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
dawnwind
初级会员   /  发表于:2017-5-15 13:30:58
板凳
感谢回复:
按照提供方案,入力问题可以解决,但是带来新的显示问题,比如,原来gird风格是背景色一行白色,一行灰色,但定义TextBox这列背景色就不能随之改变,全部是默认的白色。还有当焦点移动到这个单元格时,背景色也没有变换(其它单元格变为蓝色)。

这些显示的问题,虽然都可已用后台代码实现,但已然失去了使用C1控件的意义。

回复 使用道具 举报
dawnwind
初级会员   /  发表于:2017-5-15 13:31:02
地板
本帖最后由 dawnwind 于 2017-5-15 16:10 编辑

  ----------------------
         
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-5-15 16:23:55
5#
dawnwind 发表于 2017-5-15 13:31
----------------------

如果不想使用模板的概念。
还有一种方式,可以使用事件来设置,在PrepareCellForEdit事件里拿到元素,并且设置元素的MaxLength。
代码参考:
  1.   void _flex_PrepareCellForEdit(object sender, C1.WPF.FlexGrid.CellEditEventArgs e)
  2.         {
  3.             if (e.Column == 1)
  4.             {
  5.                 var bdr = e.Editor as Border;
  6.                 (bdr.Child as C1FlexComboBox).MaxLength = 2;
  7.             }
  8.         }
复制代码

点评

事件方法可行,感谢回复。  发表于 2017-5-16 12:33
事件方法可行,感谢回复。  发表于 2017-5-16 12:33
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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