右矢印キーで最右列に移動しても列全体が見えない

Awano Shigeru/粟野 繁 20 評価のポイント
2026-09-07T08:27:31.07+00:00

C#でVisual Studioで.NET使ってDataGridViewを作成して任意のセルを選択して右矢印キーで最右列に移動しても列全体が見えない。なせですか? 対策方法は?

開発者テクノロジ | Visual Studio | その他
開発者テクノロジ | Visual Studio | その他

Windows、Web、モバイル デバイス、その他多くのプラットフォーム向けのアプリケーションを構築するための、マイクロソフトが提供する統合開発ツール スイートのファミリーです。 特定のカテゴリに適合しないその他のトピック。


質問作成者が受け入れた回答
gekka 14,306 評価のポイント MVP ボランティア モデレーター
2026-09-08T00:20:11.9533333+00:00
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;
        };
    }
}

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。

0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。