C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.95131 の関連記事表示

<< 0 >>
■95131  Re[1]: visualStudio datagridview 昇順降順
□投稿者/ 魔界の仮面弁士 -(2020/06/24(Wed) 21:49:12)
    No95127 (ポテトサラダ爆発 さん) に返信
    > どのような処理またはプロパティ等の設定で、選択されているセルの行が、
    > 昇順降順によって動くのでしょうか。

    ごめんなさい。質問の意味が読み取れなかったです。

    とりあえず下記を実行すると、
     ・ランダムな値がセットされた DataGridView が表示される。
     ・フォームを起動した時点で、[元の3行目]〜[元の5行目]および[元の11行目]が、行全体が選択された状態になっている。
     ・また、[元の8行目] とある行は選択されていないが、その左に、現在行を表す三角マークが出ている。
    という状態になります。

    この状態で後続の列ヘッダーをクリックすると、並び替えが行われますが、
    並び替え後も、現在行は[元の8行目]と表示されている行のままですし、
    選択されている行も[元の3行目]〜[元の5行目]および[元の11行目]のままでした。

    この状態が都合が悪い…ということなのでしょうか?



    // 空のフォームで実験
    private void Form1_Load(object sender, EventArgs e)
    {
      DataGridView dgv = new DataGridView();
      dgv.Dock = DockStyle.Fill;
      dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
      dgv.MultiSelect = true;
      Controls.Add(dgv);

      // 実験用のダミーデータ
      dgv.AllowUserToAddRows = false;
      dgv.RowCount = 30;
      dgv.ColumnCount = 10;
      Random rnd = new Random();
      for (int r = 0; r < 30; r++)
      {
        dgv[0,r].Value = "元の" + r + "行目";
        for (int c = 1; c < 10; c++)
        {
          dgv[c, r].Value = rnd.Next(1000, 9999);
        }
      }

      // 8行目の先頭列をカレントセルにするが、選択状態にはしない
      (dgv.CurrentCell = dgv[0, 8]).Selected = false;

      // 代わりに、3, 4, 5, 11 行目を選択しておく
      dgv.Rows[3].Selected = true;
      dgv.Rows[4].Selected = true;
      dgv.Rows[5].Selected = true;
      dgv.Rows[11].Selected = true;


      // この状態で列ヘッダーをクリックしてみよう
    }



    > datagridviewコントロールでセル選択を行単位のみで行うよう設定してるのですが、
    SelectionMode = FullRowSelect のことですね。

    その DataGridView では、データバインドを用いていますか?

    もし DataGridView の DataSource にバインドしているとして、かつ、そのデータが
    ソート非対応なデータをバインドしている場合は、並び替えのために追加の手間がかかりますが、
    そういう状況ではないのですよね。



    > その際にdatagridviewの機能で昇順降順があるのですが、
    「昇順降順がある」というのは
    ユーザーが列ヘッダーをクリックしてソートする機能のことで良いですか?
    (その列の SortMode が Automatic に設定されている必要があります)

    それとも、DataGridView の Sort メソッドの事でしょうか?
    あるいは、バインドしている DataSource を、自身で昇順降順に並び替えてセットしている、という話でしょうか?



    > 選択している行が昇順降順されているのにフォーカス?が移動されません。

    ひとまず、フォーカスの後ろの「?」が気にかかりますが…。

    質問頂いた説明を呼んでも、どういう状況なのか分かりませんでした。
    もう少し具体的に説明して頂けると有難いです。


    とりあえず、非編集状態のセルで Tab キーを押すと、そのセルが破線で囲まれた状態で
    表示されると思いますが、これが DataGridView における「フォーカス」となります。

    もしもフォーカスの破線を表示したくない場合には、下記のようにします。
    https://dobon.net/vb/dotnet/datagridview/noforusframe.html


    DataGridView において、フォーカスは一つのセルだけに割り当たる物であり、
    行全体に対するフォーカスにはなりません。(独自描画をしてそれっぽく見せることはできますが)

    ひとまず、行単位の「フォーカス」の代わりに、
     (1) 現在カーソルがある行(行ヘッダに右向き三角が付いている行)
     (2) 現在選択されている行(通常、青色などの選択色にて描画される)
    にて代用できるかも知れません。やりたい内容にもよりますが。
記事No.95127 のレス /過去ログ165より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -