在WinForm环境
Infragistics.Win.UltraWinGrid控件中,
假设第一列的SysNo字段不能为空,
用户在输入时略过该列,则弹出警告框,并且光标回到第一列的SysNo字段中,呈选中状态特殊要求:
弹出警告框后,光标只能在输入行移动,不能移动到其他行比如我在第一行输入数据,我不输入第一列数据,移动到下一列,这时弹出警告框,光标回到第一列,
我现在的光标状态只能在第一行移动,不能移动到第二行那位大哥大姐能帮我解决下这个问题,我想了几天了,构郁闷了,实现不了我要的效果。
谢谢~!
Infragistics.Win.UltraWinGrid控件中,
假设第一列的SysNo字段不能为空,
用户在输入时略过该列,则弹出警告框,并且光标回到第一列的SysNo字段中,呈选中状态特殊要求:
弹出警告框后,光标只能在输入行移动,不能移动到其他行比如我在第一行输入数据,我不输入第一列数据,移动到下一列,这时弹出警告框,光标回到第一列,
我现在的光标状态只能在第一行移动,不能移动到第二行那位大哥大姐能帮我解决下这个问题,我想了几天了,构郁闷了,实现不了我要的效果。
谢谢~!
If e.ColumnIndex = 0 AndAlso IsDBNull(DataGridView1.Rows(e.RowIndex).Cells(0).Value) Then
MsgBox("error")
DataGridView1.Rows(e.RowIndex).Cells(0).Selected = True
DataGridView1.BeginEdit(True)
End If
End Sub Private Sub DataGridView1_CellBeginEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit
If e.ColumnIndex <> 0 AndAlso IsDBNull(DataGridView1.Rows(e.RowIndex).Cells(0).Value) Then
MsgBox("error")
DataGridView1.Rows(e.RowIndex).Cells(0).Selected = True
DataGridView1.BeginEdit(True)
End If
End Sub没测试,你参考一下吧.
你说的还是跟我的一样 还是实现不了那种效果
光标还是闪了一下就移动到你点击的单元格里面去了我的给你看看
private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
{
if (ultraGrid1.ActiveRow != null)
{
int i = this.ultraGrid1.ActiveRow.Index;
string SysNo = this.ultraGrid1.Rows[i].Cells["SysNo"].Value.ToString().Trim(); if (SysNo == "")
{
DialogResult dla = MessageBox.Show("订单号不能为空");
if (dla == DialogResult.OK)
{
if (this.ultraGrid1.ActiveRow.Cells["SysNo"].IsInEditMode)
{
ultraGrid1.Rows[0].Cells["SysNo"].Selected = true;//.SelStart = 0;
this.ultraGrid1.KeyActionMappings.Add(
new Infragistics.Win.UltraWinGrid.GridKeyActionMapping(//The mapping to add
System.Windows.Forms.Keys.LButton, //指定键代码
Infragistics.Win.UltraWinGrid.UltraGridAction.EnterEditMode,//当键执行时UltraGridAction要做的动作
Infragistics.Win.UltraWinGrid.UltraGridState.AddRow,//获取或设置不接受的的状态
Infragistics.Win.UltraWinGrid.UltraGridState.InEdit,//获取或设置必须的状态
0,//不接受的特殊的键
0));//必须的特殊键
}
}
}
}
}
你说哪个验证事件
跟我要实现的行加载事件是差不多的关键是怎么实现?
this.ultraGrid1.KeyActionMappings.Add(
new Infragistics.Win.UltraWinGrid.GridKeyActionMapping(//The mapping to add
System.Windows.Forms.Keys.LButton, //指定键代码
Infragistics.Win.UltraWinGrid.UltraGridAction.EnterEditMode,//当键执行时UltraGridAction要做的动作
Infragistics.Win.UltraWinGrid.UltraGridState.AddRow,//获取或设置不接受的的状态
Infragistics.Win.UltraWinGrid.UltraGridState.InEdit,//获取或设置必须的状态
0,//不接受的特殊的键
0));//必须的特殊键
你的这个方法在DATAGRIDVIEW中没有.
我理解的是这样的,当你选择其他行的时候可能处发了两个事件,你个是你写的那个,一个是单击事件.你的那个事件在单击事件之前发生,当你调用了以上代码的时候,虽然设置了光标,但在以后的单击事件中又改变了光标的位置.你试一下在这条语句这前 this.ultraGrid1.KeyActionMappings.Add(
new Infragistics.Win.UltraWinGrid.GridKeyActionMapping(//The mapping to add
System.Windows.Forms.Keys.LButton, //指定键代码
Infragistics.Win.UltraWinGrid.UltraGridAction.EnterEditMode,//当键执行时UltraGridAction要做的动作
Infragistics.Win.UltraWinGrid.UltraGridState.AddRow,//获取或设置不接受的的状态
Infragistics.Win.UltraWinGrid.UltraGridState.InEdit,//获取或设置必须的状态
0,//不接受的特殊的键
0));//必须的特殊键 调用一下APPLICATION.DOEVENTS(),看看这样行不行呢.
不过这个问题应该可以搞定吧,,用焦点事件,,判断,