🕌
C# DataGridViewのスクロールバーが消える現象
はじめに
開発中に謎現象に遭遇したのでメモ、メモ。
.NetFramework環境でWinフォームアプリで発生するのだけど、
TabControlの中にDataGridViewを配置して、TabControlのEnableをFlase→Trueすると、DataGridViewのスクロールバーが操作できなくなる。
環境
Win11 Home 64bit
.NetFramework4.8
VisualStudio2022
動作
とりあえず確認の為に作成したウィンドウはこんな感じ。
コントロールのプロパティは極力デフォルトなので、見た目の悪さは勘弁してください。
右側のボタンを順番に押していって、途中タブの切り替え操作を実施すると、
最後に「tabPage1」に戻すと、赤枠の通り、スクロールバーが操作出来ない状態となってしまう。
こうなると、どうにも戻りません。
実装
1.ボタンの中身は、適当にDataGridViewにデータを追加
private void button1_Click(object sender, EventArgs e)
{
foreach(var n in Enumerable.Range(0,10))
dataGridView1.Rows.Add($"{n}");
}
2.Tabは手で切りかえてね
3.TabControlをEnableを操作
private void button3_Click(object sender, EventArgs e)
{
tabControl1.Enabled = false;
}
4.DataGridViewを一旦消して、再度データを追加
private void button4_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
foreach (var n in Enumerable.Range(0, 10))
dataGridView1.Rows.Add($"{n}");
}
5.最後にTabControlをEnableを戻す
private void button4_Click(object sender, EventArgs e)
{
tabControl1.Enabled = true;
}
解決策
どうもデータを更新する順番を変更するしかないみたいです。
データ更新する際には、TabControlのEnableをTrueにした後とする事で、現象の発生を防げます。
Discussion