【发布时间】:2019-12-06 20:23:26
【问题描述】:
我正在修改一个多列列表视图,以便能够编辑其单元格。当用户点击一个已经选择的单元格时,将显示一个文本框,随后键入文本,单元格内容将被更改(当然在确认后输入)。
但是当我使用下面的方法时,出现了 TextBox,但它似乎没有被聚焦,因此没有进入编辑模式:插入符号没有显示并且用键盘输入不会改变 Text 字段文本框。只有在第二次单击文本框后才会出现插入符号。
public void startEditing(TableIndex cell)
{
editedCell = cell;
editTextBox.Bounds = CellBounds(cell);
editTextBox.Text = this[editedCell.RowIndex, editedCell.ColumnIndex];
editTextBox.Show();
editTextBox.Focus();
}
如何以编程方式将 TextBox 置于编辑模式?
在有人费心建议之前:不,我不想切换到 DataGridView 等。每次我尝试使用它们时,它们都很慢,让我觉得我在 Raspberry Pi 上模拟 Windows。
【问题讨论】:
-
你在哪里/如何打电话给
startEditing?请分享minimal reproducible example。 -
好的,我会准备一些东西...我认为关注子控件是一项常见的任务,不需要可重现的示例。
-
至少我们需要知道你在哪里调用这个方法。
MouseDown事件例如?还有一些ListView属性的值,例如FullRowSelect。 -
我在 ListView.OnMouseDown 中调用它。不过不管怎样,我会尽量准备一个完整的例子。
-
把你的代码移到MouseUp,问题就解决了。
标签: c# .net winforms listview textbox