십진수 값이 들어있는 바인딩 된 콤보 상자 열이있는 DataGridview가 있습니다. 유효한 10 진수 값의 범위가 있으므로 사용자가 선택할 수 있습니다. 그러나 이상한 문제에 직면 해 있습니다. 선택한 값으로 콤보 상자를 클릭하면 어떻게 든 목록의 첫 번째 콤보 상자로 재설정되어 이미 선택되어있는 것을 잃게됩니다. 나는 그것의 두 배 값 (콤보 상자의 목록에서 선택주의) C# DataGridView Decimal ComboBox 열
와 유사한 열을 선택하면이것은 : 사진
이것은 윈도우의 초기보기입니다 봐
10 진수 값으로 열을 선택하는 경우입니다. 동작 소수점에 대한 이상한 이유
이 public Form1()
{
InitializeComponent();
dgwResult.AutoGenerateColumns = false;
var list = new List<string>(){"A", "B", "C", "D"};
var list2 = new List<double>();
var list3 = new List<decimal>();
for (int i = 0; i < 300; i++)
{
list2.Add((double)i);
list3.Add((decimal)i);
}
dgw_2.DataSource = list;
dgw_2.DataPropertyName = "two";
dgw_3.DataSource = list2;
dgw_3.DataPropertyName = "three";
dgw_4.DataSource = list3;
dgw_4.DataPropertyName = "four";
DataTable dt = new DataTable();
dt.Columns.Add("one", typeof(string));
dt.Columns.Add("two", typeof(string));
dt.Columns.Add("three", typeof(double));
dt.Columns.Add("four", typeof(decimal));
dt.Rows.Add(new object[] { "akjsgdf", "A", 10.0, 10.0m });
dt.Rows.Add(new object[] { "akjsgdf", "B", 15.0, 15.0m });
dt.Rows.Add(new object[] { "akjsgdf", "C", 20.0, 20.0m });
dt.Rows.Add(new object[] { "akjsgdf", "D", 15.0, 15.0m });
dt.Rows.Add(new object[] { "akjsgdf", "C", 293.0, 293.0m });
dgwResult.DataSource = dt;
}
private void InitializeComponent()
{
this.dgwResult = new System.Windows.Forms.DataGridView();
this.dgw_1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dgw_2 = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.dgw_3 = new System.Windows.Forms.DataGridViewComboBoxColumn();
this.dgw_4 = new System.Windows.Forms.DataGridViewComboBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dgwResult)).BeginInit();
this.SuspendLayout();
//
// dgwResult
//
this.dgwResult.AllowUserToAddRows = false;
this.dgwResult.AllowUserToDeleteRows = false;
this.dgwResult.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgwResult.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgwResult.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dgw_1,
this.dgw_2,
this.dgw_3,
this.dgw_4});
this.dgwResult.Location = new System.Drawing.Point(12, 12);
this.dgwResult.Name = "dgwResult";
this.dgwResult.RowHeadersVisible = false;
this.dgwResult.Size = new System.Drawing.Size(268, 150);
this.dgwResult.TabIndex = 0;
this.dgwResult.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgwResult_CellClick);
//
// dgw_1
//
this.dgw_1.DataPropertyName = "one";
this.dgw_1.HeaderText = "One";
this.dgw_1.Name = "dgw_1";
//
// dgw_2
//
this.dgw_2.DataPropertyName = "two";
this.dgw_2.HeaderText = "Two";
this.dgw_2.Name = "dgw_2";
//
// dgw_3
//
this.dgw_3.DataPropertyName = "three";
this.dgw_3.HeaderText = "Double";
this.dgw_3.Name = "dgw_3";
//
// dgw_4
//
this.dgw_4.DataPropertyName = "four";
this.dgw_4.HeaderText = "Decimal";
this.dgw_4.Name = "dgw_4";
this.dgw_4.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dgw_4.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.dgwResult);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.dgwResult)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.DataGridView dgwResult;
private System.Windows.Forms.DataGridViewTextBoxColumn dgw_1;
private System.Windows.Forms.DataGridViewComboBoxColumn dgw_2;
private System.Windows.Forms.DataGridViewComboBoxColumn dgw_3;
private System.Windows.Forms.DataGridViewComboBoxColumn dgw_4;
누군가가 지적 할 수 : 선택 (번호 293) 코드는 내가 사용되는 다음
누락? 어쩌면 여기서 간단한 걸 놓칠까요?
@ V4Vendetta :이 경우 전혀 바인딩되지 않습니다. 흥미로운 점을 발견했습니다. 골절 부위 (즉, 293.0m 대신 293m)를 지정하지 않으면 정상적으로 작동합니다. – Blablablaster