C# Datagridview在更改组合框时闪烁

C# Datagridview在更改组合框时闪烁,c#,datagridview,combobox,cell-formatting,C#,Datagridview,Combobox,Cell Formatting,我正在根据combobox的选择更新单元格格式,只要我在combobox中选择值,我想要更改格式的单元格就会开始闪烁,如视频中所示 以下是单元格格式化代码: private void dg_PDetails_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (cbo_PurchaseCurrency.Text == "Rupees Purchase")

我正在根据combobox的选择更新单元格格式,只要我在combobox中选择值,我想要更改格式的单元格就会开始闪烁,如视频中所示

以下是单元格格式化代码:

private void dg_PDetails_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (cbo_PurchaseCurrency.Text == "Rupees Purchase")
        {
            var format = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
            format.CurrencySymbol = "₹ ";
            dg_PDetails.Columns["AmountProduct"].DefaultCellStyle.FormatProvider = format;
            dg_PDetails.Columns["AmountProduct"].DefaultCellStyle.Format = "c";
            dg_PDetails.Columns["RateProduct"].DefaultCellStyle.FormatProvider = format;
            dg_PDetails.Columns["RateProduct"].DefaultCellStyle.Format = "c";
        }
        else if (cbo_PurchaseCurrency.Text == "Dollar Purchase")
        {
            var formats = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
            formats.CurrencySymbol = "$ ";
            dg_PDetails.Columns["AmountProduct"].DefaultCellStyle.FormatProvider = formats;
            dg_PDetails.Columns["AmountProduct"].DefaultCellStyle.Format = "c";
            dg_PDetails.Columns["RateProduct"].DefaultCellStyle.FormatProvider = formats;
            dg_PDetails.Columns["RateProduct"].DefaultCellStyle.Format = "c";
        }
        String value = e.Value as string;
        if ((value != null) && value.Equals(e.CellStyle.DataSourceNullValue))
        {
            e.Value = e.CellStyle.NullValue;
            e.FormattingApplied = true;
        }
    }

看起来您可能为此使用了错误的事件。
DataGridView的
CellFormatting
事件经常被触发,比如当用户将光标移动到单元格上时。这意味着单元格在不必要的情况下被格式化,并可能导致您看到的闪烁。如果希望在组合框更改时更改此格式,则应将代码放入其中一个“组合框”值更改或选定值/索引更改事件中。除非组合框值发生更改,否则无需设置网格格式。@JohnG感谢您的帮助,现在效果很好。看起来您可能使用了错误的事件。
DataGridView的
CellFormatting
事件经常被触发,比如当用户将光标移动到单元格上时。这意味着单元格在不必要的情况下被格式化,并可能导致您看到的闪烁。如果希望在组合框更改时更改此格式,则应将代码放入其中一个“组合框”值更改或选定值/索引更改事件中。除非组合框值发生变化,否则无需设置网格格式。@JohnG感谢您的帮助,现在效果很好