locked
DataGridで行を選択した状態から未選択状態にする。 RRS feed

  • 質問

  • DataGridで、一度いずれかの行をクリックすると、以降ずっと行が選択された状態になり、ロストフォーカスしてもその状態は変わりませんが、それをボタン押下等のイベントで未選択状態(初期表示時の状態)に戻すような処理を行いたいのですが、再表示以外の方法で未選択状態に戻す方法はありますでしょうか。
    2010年12月18日 10:14

すべての返信

  • こんにちは よしぼんといいます。

    行の未選択状態への設定ですが、DataGridのSelectedIndexプロパティを-1にすると

    未選択状態になりますよ。

     

    --

    よしぼん

     

    • 回答の候補に設定 山本春海 2011年1月13日 6:06
    2010年12月19日 13:48
  • よしぼんさん、回答ありがとうございます。

    ボタン押下等のイベント時の処理にて、SelectedIndexプロパティに-1を設定してみましたが、未選択状態にはなりませんでした。他にもnothingやvbNullを設定してみたりもしましたが、一度選択状態になると未選択に戻すことができませんでした。
    2010年12月20日 0:40
  • SelectedIndex プロパティに -1 を設定したり、SelectedItem プロパティに null を設定すれば、行の選択状態が解除されると思うのですが。。。

    未選択に戻せないというのは、行の選択状態が解除されない、ということですよね?DataGrid にデータをセットしたり、選択を解除するために、どんなコードを書いているのでしょうか?

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答の候補に設定 山本春海 2011年1月13日 6:06
    2010年12月20日 2:09
  • セルの位置も左上隅に戻したいのであれば、こんな感じかな。ちょっと泥臭いですが。

    dataGrid1.SelectedIndex = 0;
    dataGrid1.CurrentColumn = dataGrid1.Columns[0];
    dataGrid1.SelectedIndex = -1;
    

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答の候補に設定 山本春海 2011年1月13日 6:06
    2010年12月21日 1:31
    モデレータ
  • >未選択に戻せないというのは、行の選択状態が解除されない、ということですよね?DataGrid にデータをセットしたり、選択を解除するために、どんなコードを書いているのでしょうか?

    →選択状態が解除されません。

    やりたいのは、DataGridのタイトル項目をクリックしてソートされたときに選択状態になってしまうので、ソート時のイベントを拾って、1行目を選択状態にした後、選択状態を解除したいのです。

     書いているコードは、trapemiyaさんの回答を考慮して以下のようにしたのですが、選択セルは左上に来ますが、あいかわらず選択状態が解除できません。


            Private pageView As PagedCollectionView

         ・・・(略)・・・

        pageView = New PagedCollectionView(dto.リスト)

            datagrid1.ItemsSource = pageView

            AddHandler pageView.CollectionChanged, Sub(s As Object, e As EventArgs)
                              datagrid1.SelectedIndex = 0
                              datagrid1.CurrentColumn = datagrid1.Columns(0)
                              datagrid1.SelectedIndex = -1
            End Sub

    2010年12月23日 8:01