这个人现在已经把我困住了一点点。我正在使用一些合理的默认值创建派生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中关闭我的表单设计器并重新打开它时,将再次调用构造函数,并重置我之前在设计器中所做的任何更改。我应该把这些默认值放在一个特殊的地方吗?
答案 0 :(得分:2)
不幸的是,您必须自己重新实现这些属性:
[DefaultValue(false)]
public new bool AllowUserToAddRows {
get { return base.AllowUserToAddRows; }
set { base.AllowUserToAddRows = value; }
}
关键字 new 将覆盖或隐藏基本属性,允许您更改它。 DefaultValue 属性不会“设置”属性的值,它只是由设计者用来确定是否将值写入设计器文件。您仍然需要在构造函数中设置默认值。