none
DataGridViewでカラム境界線かヘッダーかを判定したい RRS feed

  • 質問

  • 今回もお世話になります。

    またまたDataGridViewに関しての質問です。現在カラムヘッダーのソート機能を無効にし、カラムヘッダーをクリックするとダイアログを表示する様にしているのですが、カラム境界線をクリックしてもダイアログが表示されてしまいます。私としては境界線をクリックした時はカラムのリサイズのみを行いたいのですが、現状だと

    ダイアログ表示→閉じる→リサイズ処理

    となってしまいます。ダイアログを表示している処理は

       DataGridView.HitTestInfo hit = m_DataGridView.HitTest(e.X, e.Y);
       switch(hit.Type){
       case DataGridViewHitTestType.RowHeader:  // 行ヘッダー
        m_OwnBeginGrabRowIndex = hit.RowIndex;
        break;
       case DataGridViewHitTestType.ColumnHeader: // 列ヘッダー
        OnValueFormDialog(hit.ColumnIndex);
        break;
      }

    となっており、HitTestInfoでColumnHeaderが返ってきたらOnValueFormDialogを表示しているのですが境界線をクリックしてもColumnHeaderが返ってくる為、判別がうまくいけてません。

    境界線かヘッダーかをうまく判定するにはどのようにすればよろしいでしょうか?

    2010年9月1日 9:32

回答

  • >境界線かヘッダーかをうまく判定するにはどのようにすればよろしいでしょうか?

     

    ご提示されたコードの詳細まではわかりませんが、

    単にカラムヘッダのクリックとカラムヘッダの境界線のドラッグによる幅変更を

    実装したいということでしょうか?

    ColumnHeaderMouseClickイベントを使えば、ドラッグではイベントが発生しないので

    実現できるとおもいます。

     

    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    	// 境界線ドラッグではイベントが発生しない
    	MessageBox.Show("クリック");
    }
    
    

    • 回答としてマーク chakoty123 2010年9月2日 1:20
    • 回答としてマークされていない chakoty123 2010年9月2日 1:20
    • 回答としてマーク chakoty123 2010年9月2日 1:21
    2010年9月1日 9:44

すべての返信

  • >境界線かヘッダーかをうまく判定するにはどのようにすればよろしいでしょうか?

     

    ご提示されたコードの詳細まではわかりませんが、

    単にカラムヘッダのクリックとカラムヘッダの境界線のドラッグによる幅変更を

    実装したいということでしょうか?

    ColumnHeaderMouseClickイベントを使えば、ドラッグではイベントが発生しないので

    実現できるとおもいます。

     

    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
    	// 境界線ドラッグではイベントが発生しない
    	MessageBox.Show("クリック");
    }
    
    

    • 回答としてマーク chakoty123 2010年9月2日 1:20
    • 回答としてマークされていない chakoty123 2010年9月2日 1:20
    • 回答としてマーク chakoty123 2010年9月2日 1:21
    2010年9月1日 9:44
  • honefai様、ご返答ありがとうございます。

    ColumnHeaderMouseClickイベントに登録する事でうまくドラッグとクリックの処理分けできました。

    ありがとうございます。

    2010年9月2日 1:21