gpt4 book ai didi

c# - 自定义 DataGridView 重复列

转载 作者:太空狗 更新时间:2023-10-29 21:44:34 24 4
gpt4 key购买 nike

我通过继承 DataGridView 创建了一个自定义 Winforms 控件。

自定义数据 GridView 定义了它自己的列和映射。

但是,每当我将它从工具箱拖到窗体的设计表面时,窗体都会为自定义控件中的每一列重新创建一个列控件 (DataGridViewTextBoxColumn),这样我最终得到的列数是我应该的两倍有。

整个想法是控件已经“ self 感知”,所以我不需要窗体做任何事情。很明显,我忽略了一些简单的事情,但我更喜欢 Web 而不是 Windows,没有什么可以立即引起这种情况的原因。

enter image description here

自定义数据网格:

 partial class StrategyGrid
{
private System.ComponentModel.IContainer components = null;


protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Component Designer generated code
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle17 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle18 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle22 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle23 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle24 = new System.Windows.Forms.DataGridViewCellStyle();
this.zquantityDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.zbuyPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.zbuyParcelSubtotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xbuyParcelTotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xbreakevenPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xtargetPricePerShareDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xtargetParcelTotalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xTargetNetProfitAmt = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xTargetNetProfitPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xMarketPriceNetProfitAmt = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xMarketPriceNetProfitPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.xColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
this.SuspendLayout();
//
// zquantityDataGridViewTextBoxColumn
//
this.zquantityDataGridViewTextBoxColumn.DataPropertyName = "Quantity";
dataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
this.zquantityDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle13;
this.zquantityDataGridViewTextBoxColumn.HeaderText = "Qty";
this.zquantityDataGridViewTextBoxColumn.MinimumWidth = 85;
this.zquantityDataGridViewTextBoxColumn.Name = "zquantityDataGridViewTextBoxColumn";
this.zquantityDataGridViewTextBoxColumn.Width = 85;
//
// zbuyPricePerShareDataGridViewTextBoxColumn
//
this.zbuyPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "BuyPricePerShare";
dataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle14.Format = "N2";
dataGridViewCellStyle14.NullValue = null;
this.zbuyPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle14;
this.zbuyPricePerShareDataGridViewTextBoxColumn.HeaderText = "Buy Price";
this.zbuyPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 85;
this.zbuyPricePerShareDataGridViewTextBoxColumn.Name = "zbuyPricePerShareDataGridViewTextBoxColumn";
this.zbuyPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Buy price per share";
this.zbuyPricePerShareDataGridViewTextBoxColumn.Width = 85;
//
// zbuyParcelSubtotalDataGridViewTextBoxColumn
//
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.DataPropertyName = "BuyParcelSubtotal";
dataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle15.Format = "C2";
dataGridViewCellStyle15.NullValue = null;
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle15;
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.HeaderText = "Buy Sub";
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.MinimumWidth = 85;
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Name = "zbuyParcelSubtotalDataGridViewTextBoxColumn";
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Visible = false;
this.zbuyParcelSubtotalDataGridViewTextBoxColumn.Width = 85;
//
// zbuyBrokerageFeeAmountDataGridViewTextBoxColumn
//
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.DataPropertyName = "BuyBrokerageFeeAmount";
dataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle16.Format = "C0";
dataGridViewCellStyle16.NullValue = null;
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle16;
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.HeaderText = "Rates";
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.MinimumWidth = 75;
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Name = "zbuyBrokerageFeeAmountDataGridViewTextBoxColumn";
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.ToolTipText = "Buy Brokerage Rates";
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Visible = false;
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn.Width = 75;
//
// xbuyParcelTotalDataGridViewTextBoxColumn
//
this.xbuyParcelTotalDataGridViewTextBoxColumn.DataPropertyName = "BuyParcelTotal";
dataGridViewCellStyle17.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle17.Format = "N0";
dataGridViewCellStyle17.NullValue = null;
this.xbuyParcelTotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle17;
this.xbuyParcelTotalDataGridViewTextBoxColumn.HeaderText = "Buy Price Total";
this.xbuyParcelTotalDataGridViewTextBoxColumn.MinimumWidth = 85;
this.xbuyParcelTotalDataGridViewTextBoxColumn.Name = "xbuyParcelTotalDataGridViewTextBoxColumn";
this.xbuyParcelTotalDataGridViewTextBoxColumn.ToolTipText = "Buy Total Parcel Cost";
this.xbuyParcelTotalDataGridViewTextBoxColumn.Width = 85;
//
// xbreakevenPricePerShareDataGridViewTextBoxColumn
//
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "BreakevenPricePerShare";
dataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle18.Format = "N2";
dataGridViewCellStyle18.NullValue = null;
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle18;
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.HeaderText = "B/E Price";
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 100;
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.Name = "xbreakevenPricePerShareDataGridViewTextBoxColumn";
this.xbreakevenPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Breakeven price per share";
//
// xtargetPricePerShareDataGridViewTextBoxColumn
//
this.xtargetPricePerShareDataGridViewTextBoxColumn.DataPropertyName = "TargetPricePerShare";
dataGridViewCellStyle19.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle19.Format = "N2";
dataGridViewCellStyle19.NullValue = null;
this.xtargetPricePerShareDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle19;
this.xtargetPricePerShareDataGridViewTextBoxColumn.HeaderText = "Target Price";
this.xtargetPricePerShareDataGridViewTextBoxColumn.MinimumWidth = 100;
this.xtargetPricePerShareDataGridViewTextBoxColumn.Name = "xtargetPricePerShareDataGridViewTextBoxColumn";
this.xtargetPricePerShareDataGridViewTextBoxColumn.ToolTipText = "Target price per share";
//
// xtargetParcelTotalDataGridViewTextBoxColumn
//
this.xtargetParcelTotalDataGridViewTextBoxColumn.DataPropertyName = "TargetParcelTotal";
dataGridViewCellStyle20.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle20.Format = "N0";
dataGridViewCellStyle20.NullValue = null;
this.xtargetParcelTotalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle20;
this.xtargetParcelTotalDataGridViewTextBoxColumn.HeaderText = "Target Price NV";
this.xtargetParcelTotalDataGridViewTextBoxColumn.MinimumWidth = 100;
this.xtargetParcelTotalDataGridViewTextBoxColumn.Name = "xtargetParcelTotalDataGridViewTextBoxColumn";
this.xtargetParcelTotalDataGridViewTextBoxColumn.ToolTipText = "Target Price Net Value";
//
// xTargetNetProfitAmt
//
this.xTargetNetProfitAmt.DataPropertyName = "TargetNetProfitAmt";
dataGridViewCellStyle21.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle21.Format = "N2";
dataGridViewCellStyle21.NullValue = "0";
this.xTargetNetProfitAmt.DefaultCellStyle = dataGridViewCellStyle21;
this.xTargetNetProfitAmt.HeaderText = "Target NP Amt";
this.xTargetNetProfitAmt.MinimumWidth = 100;
this.xTargetNetProfitAmt.Name = "xTargetNetProfitAmt";
//
// xTargetNetProfitPct
//
this.xTargetNetProfitPct.DataPropertyName = "TargetNetProfitPct";
dataGridViewCellStyle22.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
this.xTargetNetProfitPct.DefaultCellStyle = dataGridViewCellStyle22;
this.xTargetNetProfitPct.HeaderText = "Target NP Pct";
this.xTargetNetProfitPct.MinimumWidth = 100;
this.xTargetNetProfitPct.Name = "xTargetNetProfitPct";
//
// xMarketPriceNetProfitAmt
//
this.xMarketPriceNetProfitAmt.DataPropertyName = "MarketPriceNetProfitAmt";
dataGridViewCellStyle23.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle23.Format = "N2";
dataGridViewCellStyle23.NullValue = "0";
this.xMarketPriceNetProfitAmt.DefaultCellStyle = dataGridViewCellStyle23;
this.xMarketPriceNetProfitAmt.HeaderText = "Market Price NP Amt";
this.xMarketPriceNetProfitAmt.MinimumWidth = 100;
this.xMarketPriceNetProfitAmt.Name = "xMarketPriceNetProfitAmt";
//
// xMarketPriceNetProfitPct
//
this.xMarketPriceNetProfitPct.DataPropertyName = "MarketPriceNetProfitPct";
dataGridViewCellStyle24.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
dataGridViewCellStyle24.Format = "N2";
dataGridViewCellStyle24.NullValue = null;
this.xMarketPriceNetProfitPct.DefaultCellStyle = dataGridViewCellStyle24;
this.xMarketPriceNetProfitPct.HeaderText = "Market Price NP Pct";
this.xMarketPriceNetProfitPct.MinimumWidth = 100;
this.xMarketPriceNetProfitPct.Name = "xMarketPriceNetProfitPct";
this.xMarketPriceNetProfitPct.ReadOnly = true;
//
// xColumn2
//
this.xColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.xColumn2.HeaderText = "";
this.xColumn2.Name = "xColumn2";
this.xColumn2.ReadOnly = true;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(FlatShareTradePlanList);
//
// StrategyGrid
//
this.AutoGenerateColumns = false;
this.BackgroundColor = System.Drawing.Color.Black;
this.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.zquantityDataGridViewTextBoxColumn,
this.zbuyPricePerShareDataGridViewTextBoxColumn,
this.zbuyParcelSubtotalDataGridViewTextBoxColumn,
this.zbuyBrokerageFeeAmountDataGridViewTextBoxColumn,
this.xbuyParcelTotalDataGridViewTextBoxColumn,
this.xbreakevenPricePerShareDataGridViewTextBoxColumn,
this.xtargetPricePerShareDataGridViewTextBoxColumn,
this.xtargetParcelTotalDataGridViewTextBoxColumn,
this.xTargetNetProfitAmt,
this.xTargetNetProfitPct,
this.xMarketPriceNetProfitAmt,
this.xMarketPriceNetProfitPct,
this.xColumn2});
this.Cursor = System.Windows.Forms.Cursors.Arrow;
this.MultiSelect = false;
this.Name = "StrategyGridView";
this.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Sunken;
this.RowHeadersVisible = false;
this.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.Size = new System.Drawing.Size(1193, 401);
this.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.entryStrategyGridView_CellFormatting);
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.DataGridViewTextBoxColumn zquantityDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn zbuyPricePerShareDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn zbuyParcelSubtotalDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn zbuyBrokerageFeeAmountDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn xbuyParcelTotalDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn xbreakevenPricePerShareDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn xtargetPricePerShareDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn xtargetParcelTotalDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn xTargetNetProfitAmt;
private System.Windows.Forms.DataGridViewTextBoxColumn xTargetNetProfitPct;
private System.Windows.Forms.DataGridViewTextBoxColumn xMarketPriceNetProfitAmt;
private System.Windows.Forms.DataGridViewTextBoxColumn xMarketPriceNetProfitPct;
private System.Windows.Forms.DataGridViewTextBoxColumn xColumn2;
private System.Windows.Forms.BindingSource bindingSource1;


}

当拖动到表单上时,表单会在其 InitializeComponent 内部生成以下内容:

  private StrategyGrid strategyGrid1;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn12;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn13;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn14;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn15;
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn28;

不确定它从哪里读取这些列的“要求”......但这是错误的。它们已经存在于自定义控件中。我想也许可以做 AccessModifiers,但似乎无法解决。

最佳答案

您似乎没有在这些列中分配列的 DataPropertyName。如果您已手动创建列并将 DataSrouce 分配给数据网格,则将自动生成不匹配的列。在 MSDN 上获取有关 DataPropertyName 的更多信息和示例

关于c# - 自定义 DataGridView 重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24794309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com