開発者テクノロジ | Visual Studio | その他
Windows、Web、モバイル デバイス、その他多くのプラットフォーム向けのアプリケーションを構築するための、マイクロソフトが提供する統合開発ツール スイートのファミリーです。 特定のカテゴリに適合しないその他のトピック。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
C#でVisual Studioで.NET使ってDataGridViewを作成して任意のセルを選択して右矢印キーで最右列に移動しても列全体が見えない。なせですか? 対策方法は?
Windows、Web、モバイル デバイス、その他多くのプラットフォーム向けのアプリケーションを構築するための、マイクロソフトが提供する統合開発ツール スイートのファミリーです。 特定のカテゴリに適合しないその他のトピック。
using System;
using System.Windows.Forms;
using System.Threading.Tasks;
public partial class Form1 : Form
{
public Form1()
{
this.Width = 300;
this.Height = 200;
Random rnd = new Random();
var dgv = new DataGridView() { Dock = DockStyle.Fill };
this.Controls.Add(dgv);
for (int i = 1; i <= 10; i++)
{
var clm = new DataGridViewTextBoxColumn();
clm.HeaderText = i.ToString();
dgv.Columns.Add(clm);
//列の幅が動的になる場合にはセル全体が表示されないことがある
//clm.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
clm.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
for (int r = 0; r < 10; r++)
{
dgv.Rows.Add();
dgv.Rows[r].Cells[dgv.ColumnCount - 1].Value = new string('X', r + 1);
}
this.Shown += async (s, e) =>
{
dgv.Focus();
dgv.CurrentCell = dgv.Rows[1].Cells[0];
await Task.Delay(10);
for (int i = 1; i <= dgv.ColumnCount; i++)
{
//右矢印キー
SendKeys.Send("{RIGHT}");
await Task.Delay(10);
}
};
dgv.CurrentCellChanged += (s, e) =>
{
if (dgv.CurrentCell?.ColumnIndex != dgv.ColumnCount - 1)
{
return;
}
//セル幅の計算のタイミングで幅が正しくならない場合があるので
//もう一度スクロールを行ってみる
dgv.FirstDisplayedScrollingColumnIndex = dgv.ColumnCount - 1;
};
}
}