Frage Überprüfen Sie, ob eine Bildlaufleiste in einer Datagrid-Ansicht sichtbar ist


Ich möchte etwas anzeigen, wenn das Datenraster Ansicht lang ist und eine Bildlaufleiste zeigt, aber nicht wissen, wie überprüft werden soll, ob die Bildlaufleiste sichtbar ist. Ich kann die Zeilen nicht einfach hinzufügen, da einige möglicherweise nicht sichtbar sind. Ich kann kein Ereignis verwenden, da sich mein Code bereits in einem Ereignis befindet.


9
2018-06-30 21:47


Ursprung


Antworten:


Sie können dies ausprobieren:

foreach (var scroll in dataGridView1.Controls.OfType<VScrollBar>())
{
   //your checking here
   //specifically... if(scroll.Visible)
}

11
2018-06-30 22:26



Ich bevorzuge dieses hier :

//modif is a modifier for the adjustment of the Client size of the DGV window
//getDGVWidth() is a custom method to get needed width of the DataGridView

int modif = 0;
if (DataGridView.Controls.OfType<VScrollBar>().First().Visible)
{
    modif = SystemInformation.VerticalScrollBarWidth;
}
this.ClientSize = new Size(getDGVWidth() + modif, [wantedSizeOfWindow]);

Die einzige boolesche Bedingung, die Sie benötigen, ist:

if (DataGridView.Controls.OfType<VScrollBar>().First().Visible)
{
    //want you want to do
}

4
2018-04-28 14:33



Das DataGridViewist es Scrollbars  Eigentum kann mit dem gefragt werden ScrollBars  Aufzählung indem du es mit demjenigen maskierst, an dem du interessiert bist:

if ((dataGridView1.ScrollBars & ScrollBars.Vertical) != ScrollBars.None) ...

Beachten Sie, dass die zwei "ScrollBars" hier verschiedene Dinge sind!


3
2018-06-30 22:23



Um festzustellen, ob die vertikale Bildlaufleiste vorhanden ist, müssen Sie überprüfen, wie groß Ihre sichtbaren Zeilen sind, und mit der Höhe der Datagridview vergleichen.

if(dgv1.Height > dgv1.Rows.GetRowsHeight(DataGridViewElementStates.Visible))
{
    // Scrollbar not visible
}
else
{
    // Scrollbar visible
}

Um jedoch genauer zu sein, müssen Sie möglicherweise eine Überprüfung der Spaltenbreiten vornehmen, da das Vorhandensein einer horizontalen Bildlaufleiste eine vertikale Bildlaufleiste erstellen könnte, die andernfalls nicht vorhanden ist.


2
2018-06-30 22:07