我如何制作一个按钮,可以将键发送到DataGridView中(因此我需要以某种方式将DataGridView返回到它失去焦点之前的状态)
我来解释这个问题
我有一个带有datagridview和一些按钮的窗体
我可以点击按钮,它会输入相应的字母,
dataGridView1.Focus();
SendKeys.Send("a"); //or m or z, depending on the text of the button.
这个按钮是用来向datagridview输入数据的,我可以让它只在datagridview的enter方法被调用时才被启用,当这个按钮被点击时,datagridview就会失去焦点,所以我必须在发送键之前再次给予它焦点,因此上面有两行。
我希望用户能够使用按钮将数据输入到DataGrid中。
问题是,假设我想让用户能够输入文本“maz”,我做不到。我只得到了一个单独的a或m或z。即使我可以将一个单元格恢复到可编辑模式,我也需要记住光标在哪里。因此,如果有人在一个单元格中键入asdf,并将光标放在d和f之间,然后单击m,我希望它显示asdmf。
我不知道该怎么做。
我有一个想法...也许有一种方法可以注册鼠标在按钮上,点击被按下,但不会失去对datagridview的关注,那么这将是一种可以做到的方法,但我不知道如何做到这一点,我对不同的方法感兴趣。
1条答案
按热度按时间daupos2t1#
发送键不可选按钮,如虚拟键盘
创建一个不可选择的按钮,然后处理它的click事件和send键就足够了。这样这些按钮就可以像虚拟键盘键一样工作,并且焦点将保持在有焦点的控件上,同时它将键发送到有焦点的控件。
然后处理点击事件和发送按键:
控件的SetStyle扩展方法
有没有办法在
Control
上调用SetStyle
而不使用继承?是的,使用Reflection,有,创建这个扩展方法:
然后以
Load
事件的形式使用它:那么button1将在没有继承的情况下不可选。