我希望这不是一个微不足道的问题,因为我对VS C#和WINFORMS来说还是一个新手。
T.Rahgooy在链接How do I make a DataGridView immediately commit edits?上回答了一个问题。它没有得到任何投票,但看起来像我想尝试的东西,到目前为止看起来效果很好。
对VS C#& Winforms我不确定在哪里安装它以及在哪里调用它。我将它放在我的命名空间的顶部(必须首先创建一个包含它的类),然后从RowDirtyStateNeeded事件(我添加)中调用它
问题: 1)是否有更好的地方安装扩展方法,即现有的类? 2)有没有更好的地方来调用这个方法?
namespace VX130
{
public static class ExtensionHelpers
{
public static void ChangeEditModeToOnPropertyChanged(this DataGridView gv)
{
//Use this extension method. It works for all columns types, not just ComboBoxes:
// This method commits every change just after the change is made. When we have a text column, after typing a character,
//its value will commit to the DataSource and the editmode of the cell will end. Therefore current cell should return to
//ed
gv.CurrentCellDirtyStateChanged += (sender, args) =>
{
gv.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (gv.CurrentCell == null)
return;
if (gv.CurrentCell.EditType != typeof(DataGridViewTextBoxEditingControl))
return;
gv.BeginEdit(false);
var textBox = (TextBox)gv.EditingControl;
textBox.SelectionStart = textBox.Text.Length;
}
}
}
}