[NetAdvantage]如何使UltraWinGrid的Cell得到焦点并进入编辑状态
首先要将grid中要得到焦点并进入编辑状态的cell置为ActiveCell,这可以通过下面的语句做到,
//this.grid.ActiveCell = this.grid.Rows[0].Cells["Name"];
this.grid.Rows[0].Cells["Name"].Activate();
然后就是给grid发送一个EnterEditMode消息。
this.grid.PerformAction(UltraGridAction.EnterEditMode);
如果要使grid窗口一打开该Cell就进入编辑状态,可以将上面的代码放在窗口的Actived事件中(该事件是窗口打开时处理的最后一个事件)。
private void UltraGridTest_Activated(object sender, EventArgs e)
{
this.grid.ActiveCell = this.grid.Rows[0].Cells["Name"];
this.grid.PerformAction(UltraGridAction.EnterEditMode);
}
Related Posts
People who read this, also read...
[NetAdvantage]如何触发UltraTextEditor上的DoubleClick事件
在UltraTextEditor控件上绑定DoubleClick事件,然后双击它的Edit区域,这时DoubleClick事件并不会被触发。究其原因是当UltraTextEditor控件处于编辑模式(edit mode)时,它会在控件上方显示一个编辑窗口(edit window),所以这时候的DoubleClick事件实际上是发生在编辑窗口上。
UltraTextEditor ute = new UltraTextEditor();
ute.DoubleClick += new System.EventHandler(ute_DoubleClick)
解决方法是监视UltraTextEditor控件上的ControlAdded和ControlRemoved事件,在这两个事件的方法内动态地在编辑窗口(edit window)控件上挂接DoubleClick事件,代码如下:
using System;
using System.Windows.Forms;
using Infragistics.Win.UltraWinEditors;
UltraTextEditor ute = new UltraTextEditor();
this.ute.ControlAdded += new ControlEventHandler(this.ute_ControlAdded);
this.ute.ControlRemoved += new ControlEventHandler(this.ute_ControlRemoved);
private void ute_ControlAdded(object sender, ControlEventArgs e)
{
e.Control.DoubleClick += new EventHandler(control_DoubleClick);
}
private void ute_ControlRemoved(object sender, ControlEventArgs e)
{
e.Control.DoubleClick -= new EventHandler(control_DoubleClick);
}
Related Posts
People who read this, also read...
[NetAdvantage]输入无效日期值后不能离开UltraMaskedEdit的问题
在Form上放置两个控件,一个UltraTextEditor控件和一个UltraMaskedEdit控件,并将UltraMaskedEdit控件的InputMask属性设为mm/dd/yyyy。这时如果在UltraMaskedEdit控件中输入了无效的日期值,就会导致不能离开这个控件--按TAB键或点击UltraTextEditor控件不起作用。解决方法是创建一个继承IEditorDataFilter接口的DataFilter类,当数据转换方向是DisplayToEditor时就判断UltraMaskedEdit的值是否是一个有效的日期值,如果不是的话就返回null。下面的完整的代码实现:
class DateTimeEditorDataFilter : Infragistics.Win.IEditorDataFilter
{
public object Convert(Infragistics.Win.EditorDataFilterConvertArgs args)
{
switch(args.Direction)
{
case ConversionDirection.DisplayToEditor:
args.Handled = true;
DateTime dt;
if (DateTime.TryParse((string)args.Value, out dt))
{
return dt;
}
break;
}
return null;
}
}
Related Posts
People who read this, also read...
[NetAdvantage]如何隐藏UltraCombo的下拉按钮
UltraCombo没有可以直接控制下拉按钮(drop down button)隐藏的属性。因此,要想隐藏下拉按钮就必须使用DrawFilter或CreationFilter。
使用DrawFilter必须实现IUIElementDrawFilter接口。IUIElementDrawFilter接口有两个方法:GetPhasesToFilter和DrawElement。
GetPhasesToFilter方法用来表示哪些绘制操作阶段(Phase)需要被过滤出来,并且在这些相应的绘制操作阶段DrawElement方法会被调用。DrawElement方法确定是否执行默认的绘制操作,当DrawElement返回false的时候表示执行默认的绘制操作,返回true则不执行。由此可知,只要在GetPhasesToFilter中过滤出下拉按钮的绘制阶段,然后在DrawElement中返回true就可以隐藏起下拉按钮了。
因为UltraCombo的下拉按钮属于EditorWithComboDropDownButtonUIElement类型,所以在GetPhasesToFilter可以通过判断当前要绘制的Element是否是一个EditorWithComboDropDownButtonUIElement类型,如果是的话就将当前要绘制的Element的BeforeDrawElement过滤出来
public Infragistics.Win.DrawPhase GetPhasesToFilter(ref Infragistics.Win.UIElementDrawParams drawParams)
{
// 在绘制下拉按钮前调用DrawElement方法
if (drawParams.Element is EditorWithComboDropDownButtonUIElement)
return DrawPhase.BeforeDrawElement;
return DrawPhase.None;
}
public bool DrawElement(Infragistics.Win.DrawPhase drawPhase, ref Infragistics.Win.UIElementDrawParams drawParams)
{
// 不执行默认的绘制操作,即不绘制下拉按钮
return true;
}
有时候我们可能需要动态控制下拉按钮的显示。譬如,当UltraCombo控件enabled的时候显示下拉按钮,disabled的时候下拉按钮消失。这很容易就可以做到,只要在DrawElement方法中添加一条判断语句就行了
public bool DrawElement(Infragistics.Win.DrawPhase drawPhase, ref Infragistics.Win.UIElementDrawParams drawParams)
{
if (drawParams.Element.Enabled)
return false;
return true;
}

