【问题标题】:Datagridview multi line textbox when ctrl+enter press当 ctrl+enter 按下时 Datagridview 多行文本框
【发布时间】:2017-02-22 15:10:55
【问题描述】:

我正在尝试向datagridview 控件添加一些特定行为(如果您可以这样说的话)。

我想在datagridview 中有一个multiplelines textbox 控件。我在给出一个太长而无法放入textbox 的字符串时实现了这一点,它会自动放在第二行。

所以步骤是在单元格中输入文本,而焦点在单元格上时按 ctrl+enter 以便接下来输入的文本位于第二行。

dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells

但我也可以通过按ctrl + enter key 来强制输入第二行。关于这件事,我的互联网搜索结果为空。

我猜它会在单元格中捕获按键事件,但我似乎找不到这个事件。

Possible events

我尝试了这个事件,但只有在选择了Datagridview 时才会发生这种情况。

Private Sub DataGridView1_CellContentClick(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles DataGridView1.KeyPress
     ' Some magic here.
End Sub

【问题讨论】:

  • 你试过“Shift-Enter”吗?

标签: vb.net winforms datagridview multiline


【解决方案1】:

我相信您可以通过更改 DataGridView 中的几个属性并使用“Shift-Enter”而不是“Ctrl-Enter”来实现所需的结果。

DataGridView 中将其AutoSizeRowsMode 设置为AllCells,然后将特定的COLUMNS DefaultCellStyle -> WrapMode 设置为true。然后在编辑单元格时使用“Shift-Enter”,您应该在一个单元格中获得多行。希望这就是您想要的。

【讨论】:

  • 您好,感谢您的回答。您知道如何在 shift-enter 发生时直接调整行大小吗?
  • 如果DataGridView AutoSizeRowsMode 设置为AllCellsDisplayedCells,那么一旦您点击远离编辑的单元格,它应该调整刚刚编辑的行的大小以适合文本。我猜这就是你的意思。不幸的是,当AutoSizeRowsMode 设置为AllCells 时,用户将无法在编辑之前调整行大小..
  • 这就是我的意思,但是在点击离开之前不可能调整行的大小?
  • 如果不简单地输入一些额外的回报然后点击离开然后返回,我无法让它以这种方式工作。我确定这是因为行设置为自动大小,并且在用户离开单元格之前它不会知道行数。
【解决方案2】:

对不起,C# 语法。但我猜这个事件也存在于 VB.NET 中。

我建议使用KeyDown 事件:

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("I have been Executed!");
    }
}

这对我在DataGridView 具有焦点时捕捉键盘输入很有用。

【讨论】:

  • 嗨,我可能不太清楚,所以我更新了我的问题。我想在按 ctrl+enter 输入单元格时添加换行符。这样我就可以选择文本的哪一部分在新行上,而不仅仅是它如何适合单元格。
猜你喜欢
  • 2011-10-03
  • 1970-01-01
  • 2017-11-22
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多