0
Dataagridview의 자동 정렬에 문제가 있습니다. 열 머리글을 한 번 클릭하면 값이 정렬되지만 삼각형 기호는 변경되지 않으므로 잘못된 방향을 가리 킵니다. 두 번째 클릭하면 변경되는 삼각형입니다 (다른 방향을 가리 키지 만 DataGridview의 값과 비교할 때 정확함) 그런 다음 정렬 프로세스가 반복됩니다. 따라서 열을 정렬하려면 클릭해야합니다 머리글 두 번 : 방향 표시/글리프를 변경하려면 먼저, 값을 정렬하려면 두 번째.열을 정렬하려면 datagridview를 두 번 클릭해야하는 이유
여기서는 이것이 중요하지 않다고 생각하지만이 DGV의 경우 데이터 소스로 BindingList를 사용했습니다.
디자이너 코드 :
//
// dgv
//
this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.monthColumn,
this.colorColumn});
this.dgv.Location = new System.Drawing.Point(22, 127);
this.dgv.Name = "dgv";
this.dgv.Size = new System.Drawing.Size(468, 164);
this.dgv.TabIndex = 0;
this.dgv.CellBeginEdit += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.dgv_CellBeginEdit);
this.dgv.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_CellClick);
this.dgv.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_CellEndEdit);
this.dgv.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dgv_RowsAdded);
//
// monthColumn
//
this.monthColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.monthColumn.DefaultCellStyle = dataGridViewCellStyle3;
this.monthColumn.HeaderText = "Miesiące";
this.monthColumn.Name = "monthColumn";
this.colorColumn.ValueType = typeof(int);
this.monthColumn.Width = 72;
//
// colorColumn
//
this.colorColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
this.colorColumn.DefaultCellStyle = dataGridViewCellStyle4;
this.colorColumn.HeaderText = "Barwa";
this.colorColumn.Name = "colorColumn";
this.colorColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.colorColumn.ValueType = typeof(System.Drawing.Color);
바인딩 절차 :
dgv.AutoGenerateColumns = false;
monthColumn.DataPropertyName = "Months";
colorColumn.DataPropertyName = "Color";
colorColumn.ReadOnly = false;
dgv.DataSource = bcolors;//BindingList
dgv.Sort(monthColumn, ListSortDirection.Ascending);
이벤트 방법 행의 backgroundColor을 적용하고 colorColumn을 (읽기 전용 작동하지,하지만이 지점 아니다 않는 편집을 허용하는 데 사용됩니다? 여기)
이, 내 경우에는 아무것도 변경되지 않습니다 또한 내가 정말이 열이 정렬되고 싶지 않아, 그건 NotSortable 설정. –