dawnwind 发表于 2017-5-12 10:27:06

c1:C1FlexGrid 单元格只可以输入一位数字如何设定

如题,WPF 版, c1:C1FlexGrid的某一列内容允许输入一位数字,有没有类似于MaxInputLength = 1 这样的属性可以在前台设定?
Winform版有这样的属性,WPF版对应的属性是什么,急。

Alice 发表于 2017-5-12 17:20:13

不好意思回复晚了。
列上是没有这个属性的,但是列可以设置不同的DataTemplate,你可以放不同类型的控件上去。
比如你放了TextBox,它本身就有MaxLength属性。
      <c1:Column>
                  <c1:Column.CellTemplate>
                        <DataTemplate>
                            <TextBox MaxLength="5"></TextBox>
                        </DataTemplate>
                  </c1:Column.CellTemplate>
                </c1:Column>

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

dawnwind 发表于 2017-5-15 13:31
----------------------

如果不想使用模板的概念。
还有一种方式,可以使用事件来设置,在PrepareCellForEdit事件里拿到元素,并且设置元素的MaxLength。
代码参考:
void _flex_PrepareCellForEdit(object sender, C1.WPF.FlexGrid.CellEditEventArgs e)
      {
            if (e.Column == 1)
            {
                var bdr = e.Editor as Border;
                (bdr.Child as C1FlexComboBox).MaxLength = 2;
            }
      }
页: [1]
查看完整版本: c1:C1FlexGrid 单元格只可以输入一位数字如何设定