关于自定义表格的问题

zheninchangjiang 2010-05-16 10:29:13
我现在只想问一下 有没有遇上我目前的状况:
我自定义了一自定义控件,由textbox和button构成,button的tabindex,button的tabindex1,目的是过滤用户输入,查询基础档案的中的对应条目,我想常做数据库编程的一定知道。
自定义一datagridviewtextboxcolumn,使用上述自定义控件,按照示例中该写的方法都有了。
自定义了datagridviewrow,将回车键搞成TAB,
现在的状况是,我在进入自定义控件进行编辑后,按回车键,输入的内容成了空白。如果我输入内容后用鼠标点击其他单元格,输入的内容则有效,实在是不明白。
在实际的调试中我发现,我输入回车键后,自定义控件的赋值正常
如果是点击其他单元格,调试中发现这种方式需要在自定义控件赋值后再对自定义控件所在的单元格初始化编辑一般再赋一次值
那如何让我输入回车键,也同鼠标点击其他单空白单元格一般呢?

由于有三个控件的代码,并且自定义控件的代码很长,不想贴出来,如果有兴趣解决问题我可以另外再贴出,自定义控件也是根据数据库中的设置分别进行赋值的
自定义datagridviewtextboxcolumn的代码见
http://topic.csdn.net/u/20100306/12/2ef2262b-c708-4f1d-ac87-d958dd5aba19.html
...全文
102 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheninchangjiang 2010-08-11
  • 打赏
  • 举报
回复
本贴没有得到结果,先结了再说
CS591399461 2010-05-16
  • 打赏
  • 举报
回复
sdgrtyh ghtiyihfgfgse57898uu
qiqishardgel 2010-05-16
  • 打赏
  • 举报
回复
不是太明白!
捷哥1999 2010-05-16
  • 打赏
  • 举报
回复
现在的状况是,我在进入自定义控件进行编辑后,按回车键,输入的内容成了空白。如果我输入内容后用鼠标点击其他单元格,输入的内容则有效,实在是不明白。

你需要重写DataGridVeiw的ProcessDataGridViewKey函数:

protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{

if (base.CurrentCell.RowIndex < base.Rows.Count - 1)
{
if (base.CurrentCell.ColumnIndex < base.Columns.Count - 1)
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex].Cells[base.CurrentCell.ColumnIndex + 1];
else
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0];
}
return false;
}
return base.ProcessDataGridViewKey(e);
}
zheninchangjiang 2010-05-16
  • 打赏
  • 举报
回复
我自己再测试发现,如果将 textbox的tabindex-0,button的tabindex-1可以解决问题,但是在非表格界面,则不能按照正常的设定的tab顺序跳转
空心兜兜 2010-05-16
  • 打赏
  • 举报
回复
- -
有点复杂
wuyq11 2010-05-16
  • 打赏
  • 举报
回复
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//判断键盘按下的键。如果等于“enter”,则send一个“{tab}”
if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{tab}");
return true;
}

//继续原来base.ProcessCmdKey中的处理
return base.ProcessCmdKey(ref msg, keyData);
}

zheninchangjiang 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 computerfox 的回复:]

现在的状况是,我在进入自定义控件进行编辑后,按回车键,输入的内容成了空白。如果我输入内容后用鼠标点击其他单元格,输入的内容则有效,实在是不明白。

你需要重写DataGridVeiw的ProcessDataGridViewKey函数:
C# code

protected override bool ProcessDataGridViewKey(KeyEventArgs ……
[/Quote]

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//if (_vertical && keyData == Keys.Enter)
//{
// SendKeys.Send("{TAB}");
// return (true);
//}
//else
//{
// return base.ProcessCmdKey(ref msg, keyData);
//}
return base.ProcessCmdKey(ref msg, keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode==Keys.Enter)
{

if (base.CurrentCell.RowIndex < base.Rows.Count - 1)
{
if (base.CurrentCell.ColumnIndex < base.Columns.Count - 1)
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex].Cells[base.CurrentCell.ColumnIndex + 1];
else
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0];
}
return false;
}
return base.ProcessDataGridViewKey(e);
}

上部份是为了解决enter键向右,先不使用,下半部份是复制得来的,问题依旧,输入enter键还是留不下数据

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧