DataGridView.Font没有直观更新

时间:2013-12-30 17:34:43

标签: c# winforms user-interface datagridview

我正在开发一个对话框来配置DataGridView的外观。一切都很好,直到DataGridView应该重绘,因为它的字体已经改变。所有DataGridViews都有一个基类,它会覆盖Font的getter以获取所选的Font。

我正在尝试更新我的DGV:

public static void RefreshAllConfigurationForms(Control parent)
{
    var controls = parent.GetChildControls(typeof(ConfigurableDataGridView));

    if (controls != null)
    {
        foreach (var configurableControl in controls)
        {
            configurableControl.Refresh();
        }
    }
}

调试时     configurableControl.Refresh(); DGV的字体设置正确,但它没有直观更新。实际上我注意到InheritedEditingCellStyle的Font仍然是旧的。

Font是在DataGridView的派生中设置的:

public class ConfigurableDataGridView : DataGridView
{
    public override System.Drawing.Font Font
    {
        get
        {
            return AppearanceConfiguration.Font;
        }
    }
}

那么有没有办法强制重绘“更多”?

更多信息: DataGridView是TabControl的一部分。打开新选项卡时,字体会正确呈现,但在更改字体时,DGV不会更新。

2 个答案:

答案 0 :(得分:1)

不知何故,我的DataGridView的父窗体阻止它更新其视觉效果。因此,当在该(嵌入)表单上调用Refresh时,DataGridView会按预期更新。

答案 1 :(得分:0)

您是否尝试过调用MyForm.Paint()?我相信这应该重绘所有子项以及表单本身。