0


0

ComboBox列を動的に構築して値を追加するDataGridViewがあるとします。 ユーザーがドロップダウンリストを表示するためにドロップダウンボタンをクリックしたときにトラップするための最良の方法は何ですか。 単にDataGridViewでCellClickを使用すると、ユーザーが実際にドロップダウンボタンをクリックしなくてもそのイベントが発生します。

これまでのところ私がやったことは基本的にDataGridViewComboBoxCellから継承してDropDownWidthPropertyを上書きしました。 ゲッターではDropDownイベントを発生させます。 これは機能しますが、非常に "ハッキー"になります。 他に何か提案はありますか?

システムを使用する。 System.Windows.Formsを使用します。

パブリッククラスDataGridViewEventComboBoxCell:DataGridViewComboBoxCell {プライベートブールdropDownShown = false;パブリックイベントEventHandler BeforeDropDownShown。

private void OnBeforeDropDownShown(){if(this.BeforeDropDownShown!= null){this.BeforeDropDownShown(this、new EventArgs()); }}

public override int DropDownWidth {get {if(!dropDownShown)//このブール値は、最初にトラップする必要があるだけなので、ここにあります。{this.OnBeforeDropDownShown(); dropDownShown = true; base.DropDownWidthを返します。 set {base.DropDownWidth = value;} }}

}

1 Answer


2


EditingControlShowingを試してみてください