2

这一点已经让我难住了一小会儿。我使用一些合理的默认值创建派生的System.Windows.Forms.DataGridView控件。现在要清楚地说明它们只是默认值,应该可以在设计器中进行更改。截至目前我有默认值的控制构造被设置:在哪里设置自定义控件的默认设置

using System.Drawing; 
using System.Windows.Forms; 

namespace TruckSmart.Controls 
{ 
    /// <summary> 
    /// An implementation of a System.Windows.Forms.DataGridView with sensible default values. 
    /// </summary> 
    public class DataGrid : System.Windows.Forms.DataGridView 
    { 
     /// <summary> 
     /// Initializes a new instance of the TruckSmart.Controls.DataGrid class. 
     /// </summary> 
     public DataGrid() 
     { 
      AllowUserToAddRows = false; 
      AllowUserToDeleteRows = false; 
      AllowUserToOrderColumns = false; 
      AllowUserToResizeColumns = false; 
      AllowUserToResizeRows = false; 
      AutoGenerateColumns = false; 
      AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; 
      AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells; 
      BackgroundColor = SystemColors.Window; 
      BorderStyle = BorderStyle.Fixed3D; 
      ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None; 
      Margin = new Padding(0); 
      MultiSelect = false; 
      ReadOnly = true; 
      RowHeadersVisible = false; 
      SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

      AlternatingRowsDefaultCellStyle = new DataGridViewCellStyle() 
      { 
       BackColor = Color.FromKnownColor(KnownColor.AliceBlue) 
      }; 

      ColumnHeadersDefaultCellStyle = new DataGridViewCellStyle() 
      { 
       WrapMode = DataGridViewTriState.False 
      }; 
     } 
    } 
} 

使用构造函数中的主要问题是,当我关闭在Visual Studio和重新打开我的窗体设计它的构造函数被调用而且我之前在设计器中所做的任何更改都会重置。是否有一个特殊的地方我应该把这些默认值?

回答

2

不幸的是,你将不得不再次自己重新实现属性:

[DefaultValue(false)] 
public new bool AllowUserToAddRows { 
    get { return base.AllowUserToAddRows; } 
    set { base.AllowUserToAddRows = value; } 
} 

关键字将覆盖或阴影的基础属性,让你改变它,然后。 10 DefaultValue属性不会“设置”该属性的值,它只是由设计者用来确定是否将值写入设计器文件。您仍然必须在构造函数中设置默认值。

+0

@CrisMcLaughlin这个工程。看起来这是最简单的解决方案。我不知道为什么有些人不喜欢使用'new'来影响基本成员,但在某些情况下(例如这种情况)它真的很有用。 –

+0

事实证明,它确实有效。我设置了错误的属性......再次感谢! –

相关问题