xiaoaj 发表于 2021-5-28 14:03:49

Multirow10 如何代码实现更好列类型及绑定添加Event事件

本帖最后由 xiaoaj 于 2021-6-4 21:55 编辑

动态更改列的控件类型如何实现?类似以下语句
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.ButtonEditor("代替有り")
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.TextEditor


旧版本4.0的KeyDown事件在文本框编辑状态下响应,
但是在10.0文本框进入编辑状态下不响应KeyDown事件,
想获取到当前编辑状态下的控件,添加绑定KeyDown事件,
如何实现?

Richard.Ma 发表于 2021-5-28 14:59:46

可以用MultiRow上的EditingControlShowing事件


    this.gcMultiRow1.EditingControlShowing += new System.EventHandler<GrapeCity.Win.MultiRow.EditingControlShowingEventArgs>(this.gcMultiRow1_EditingControlShowing);

   
      private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
      {​​​​​​​
            // remove old event handler
            e.Control.KeyDown -= this.PrintKeyKode;
            // add new event
            e.Control.KeyDown += this.PrintKeyKode;
      }​​​​​​​


      private void PrintKeyKode(object sender,KeyEventArgs args)
      {​​​​​​​
            Debug.WriteLine(args.KeyCode);
      }​​​​​​​



xiaoaj 发表于 2021-5-28 15:22:17

Richard.Ma 发表于 2021-5-28 14:59
可以用MultiRow上的EditingControlShowing事件

动态更改列的控件类型如何实现?

xiaoaj 发表于 2021-5-28 15:35:48

本帖最后由 xiaoaj 于 2021-5-28 15:37 编辑

Richard.Ma 发表于 2021-5-28 14:59
可以用MultiRow上的EditingControlShowing事件
按照您提示的方法可以实现,但是由于没有RemoveHandler掉,多次进入后方法会被掉好几次。哦,看到了,先remove再添加。可以了

Richard.Ma 发表于 2021-5-28 16:17:27

好的

xiaoaj 发表于 2021-5-28 16:24:47

Richard.Ma 发表于 2021-5-28 16:17
好的

动态更改列的控件类型如何实现?

Richard.Ma 发表于 2021-5-28 18:22:27

改列类型很简单var template = this.gcMultiRow1.Template;template.Row.Cells.RemoveAt(0);
template.Row.Cells.Insert(0, new TextBoxCell());
this.gcMultiRow1.Template = template;

xiaoaj 发表于 2021-5-31 11:02:52

Richard.Ma 发表于 2021-5-28 18:22
改列类型很简单var template = this.gcMultiRow1.Template;template.Row.Cells.RemoveAt(0);
template.Row ...

同一列不同行支持不同的列类型吗?根据您提示的代码,只能修改整个列的类型。目前的业务处理需要不同行不同列类型,比如第一行是文本第二行是按钮。

Richard.Ma 发表于 2021-5-31 11:20:32

你好,这个目前没有办法支持

sxyweiren 发表于 2021-6-7 10:30:39

动态更改列的控件类型如何实现?类似以下语句
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.ButtonEditor("代替有り")
.Item("セット品区分").Editor = New GrapeCity.Win.ElTabelle.Editors.TextEditor
这种只能根据业务需求来更改代码实现。

比如你这种,应该就是某种情况下可以编辑,另外一种情况设置成固定值。把ReadOnly设置成True就好了。
如果后续有点击动作的话,需要设定背景色,设定鼠标点击动作。做出Button的效果就行。

因为旧的ElTable就是一个表格,可以动态设定某个单元格的类型。但是MR10是一种基于模板的控件。单元格类型是以列为单位设定的。

如果项目很复杂,需要实现相同的效果,可以尝试Spread。
页: [1] 2
查看完整版本: Multirow10 如何代码实现更好列类型及绑定添加Event事件