Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式将TextBox置于编辑模式_C#_.net_Winforms_Listview_Textbox - Fatal编程技术网

C# 以编程方式将TextBox置于编辑模式

C# 以编程方式将TextBox置于编辑模式,c#,.net,winforms,listview,textbox,C#,.net,Winforms,Listview,Textbox,我正在修改多列列表视图,以便能够编辑其单元格。当用户点击已选择的单元格时,将显示一个文本框,随后通过键入文本,单元格内容将被更改(当然,在确认输入后) 但是当我使用下面的方法时,文本框会出现,但它似乎没有聚焦,因此不会进入编辑模式:插入符号不会显示,并且用键盘键入不会更改文本框的文本字段。只有在第二次单击文本框后,插入符号才会出现 public void startEditing(TableIndex cell) { editedCell = cell; editTextBox.

我正在修改多列列表视图,以便能够编辑其单元格。当用户点击已选择的单元格时,将显示一个文本框,随后通过键入文本,单元格内容将被更改(当然,在确认输入后)

但是当我使用下面的方法时,文本框会出现,但它似乎没有聚焦,因此不会进入编辑模式:插入符号不会显示,并且用键盘键入不会更改文本框的文本字段。只有在第二次单击文本框后,插入符号才会出现

public void startEditing(TableIndex cell)
{
    editedCell = cell;
    editTextBox.Bounds = CellBounds(cell);
    editTextBox.Text = this[editedCell.RowIndex, editedCell.ColumnIndex];
    editTextBox.Show();
    editTextBox.Focus();
}
如何以编程方式将文本框置于编辑模式


在任何人提出建议之前:不,我不想切换到DataGridView之类的。每次我尝试使用它们时,它们的速度都非常慢,让我感觉就像在Raspberry Pi上模拟Windows一样。

如果在listView上调用事件处理程序,如
listView。ItemSelectionChanged
触发事件处理程序后,焦点会回到listView框,这就是它切换回选择listView的原因

您可以通过在原始事件处理程序之后使用另一个GotFocus eventHandler并将焦点设置为textBox来解决此问题

this.listView1.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler( this.listView1_SelectedIndexChanged);
this.listView1.GotFocus += new System.EventHandler(this.listView1_Focused);

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
//call startEditing code
}

private void listView1_Focused(object sender, EventArgs e)
{
editTextBox.Focus();
}

OP:我在ListView.OnMouseDown中调用它

OnMouseUp
中显示并聚焦编辑器控件

ListView
处理并推送焦点,这意味着在处理
OnMouseDown
代码后,
ListView
将获得焦点


使
文本框
获得焦点的最简单的修复方法是显示
文本框
,并在
OnMouseUp

中集中显示
启动的位置/方式
?请分享。好的,我会准备一些东西。。。我认为关注子控件是一项常见的任务,不需要重复的示例。至少我们需要知道您在哪里调用此方法<例如,代码>鼠标向下事件?还有一些
ListView
属性的值,如
FullRowSelect
。我在ListView.OnMouseDown中调用它。但无论如何,我将尝试准备一个完整的示例。将代码移动到MouseUp,问题就会得到解决。不知何故,这不起作用,至少在我的情况下不起作用。我遵循了雷扎哈伊的建议,这就成功了。无论如何,谢谢你。