Fix display issue if all columns are hidden on startup

This commit is contained in:
Michael Bucari-Tovo 2022-05-09 14:16:14 -06:00
parent 5ad1e45c65
commit 19262bceac
2 changed files with 28 additions and 9 deletions

View File

@ -78,7 +78,6 @@
this.dataGridViewTextBoxColumn10, this.dataGridViewTextBoxColumn10,
this.dataGridViewTextBoxColumn11, this.dataGridViewTextBoxColumn11,
this.dataGridViewImageButtonBoxColumn2}); this.dataGridViewImageButtonBoxColumn2});
this.gridEntryDataGridView.ContextMenuStrip = this.contextMenuStrip1;
this.gridEntryDataGridView.DataSource = this.gridEntryBindingSource; this.gridEntryDataGridView.DataSource = this.gridEntryBindingSource;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window; dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;

View File

@ -35,21 +35,20 @@ namespace LibationWinForms
// alias // alias
private DataGridView _dataGridView => gridEntryDataGridView; private DataGridView _dataGridView => gridEntryDataGridView;
public ProductsGrid() protected override void OnVisibleChanged(EventArgs e)
{ {
InitializeComponent(); contextMenuStrip1.Items.Add(new ToolStripLabel("Show / Hide Columns"));
contextMenuStrip1.Items.Add(new ToolStripSeparator());
//Restore Grid Display Settings //Restore Grid Display Settings
var config = Configuration.Instance; var config = Configuration.Instance;
var displayIndices = config.GridColumnsDisplayIndices; var displayIndices = config.GridColumnsDisplayIndices;
var hiddenGridColumns = config.HiddenGridColumns;
contextMenuStrip1.Items.Add(new ToolStripLabel("Show / Hide Columns")); int columnIndex = 0, numVisible = 0;
contextMenuStrip1.Items.Add(new ToolStripSeparator());
var columnIndex = 0;
foreach (DataGridViewColumn column in _dataGridView.Columns) foreach (DataGridViewColumn column in _dataGridView.Columns)
{ {
var visible = !config.HiddenGridColumns.Contains(column.DataPropertyName); var visible = !hiddenGridColumns.Contains(column.DataPropertyName);
var itemName = column.DataPropertyName; var itemName = column.DataPropertyName;
var menuItem = new ToolStripMenuItem() var menuItem = new ToolStripMenuItem()
@ -63,8 +62,23 @@ namespace LibationWinForms
column.Visible = visible; column.Visible = visible;
column.DisplayIndex = displayIndices[columnIndex++]; column.DisplayIndex = displayIndices[columnIndex++];
column.HeaderCell.ContextMenuStrip = contextMenuStrip1;
if (visible) numVisible++;
} }
if (numVisible == 0)
{
_dataGridView.ContextMenuStrip = contextMenuStrip1;
}
base.OnVisibleChanged(e);
}
public ProductsGrid()
{
InitializeComponent();
// sorting breaks filters. must reapply filters after sorting // sorting breaks filters. must reapply filters after sorting
_dataGridView.Sorted += Filter; _dataGridView.Sorted += Filter;
_dataGridView.CellContentClick += DataGridView_CellContentClick; _dataGridView.CellContentClick += DataGridView_CellContentClick;
@ -93,6 +107,12 @@ namespace LibationWinForms
.Where(c=>!c.Visible) .Where(c=>!c.Visible)
.Select(c => c.DataPropertyName) .Select(c => c.DataPropertyName)
.ToArray(); .ToArray();
_dataGridView.ContextMenuStrip =
_dataGridView.Columns
.Cast<DataGridViewColumn>()
.Where(c => c.Visible).Any() ?
default(ContextMenuStrip) : contextMenuStrip1;
} }
} }
private void EnableDoubleBuffering() private void EnableDoubleBuffering()