实现DataGridView扩展方法更改的最佳位置

时间:2014-10-01 01:07:10

标签: c# winforms datagridview

我希望这不是一个微不足道的问题,因为我对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;
            }
        }
    }
}

0 个答案:

没有答案