- PR -

datagridviewの列の手動再配置時のイベント

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-02-15 13:49
datagridviewで列を手動再配置したときに発生するイベントを
探しておりますが

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview_members(VS.80).aspx

ここのページを探しましたがありそうでなさげなのですが
イベントはあるのでしょうか?
ご存知の方教えていただけると幸いです。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-02-15 20:47
「手動再配置」というのは、AllowUserToOrderColumnsをTrueに設定したDataGridViewで、
ユーザーが列ヘッダーをドラッグして移動したときのことでしょうか?

試していませんが、DataGridViewColumnCollection.CollectionChangedはどうでしょうか?
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-02-16 15:06
手動再配置の意味は全くそのとおりです。

教えていただいたイベントは最初プロパティウィンドウに
見当たらなかったので何のことかと思いましたが、
調べてみてわかりました。

イベントを自分でこさえるのは初めてだったので
ちょっとてこづってしまいました。

それでやってみたのですが、列をドラッグして
移動してもイベントは発生しませんでした。

MSDNの説明として

コレクションの変更の例としては、列の追加や削除などがあります。

と書いてありましたが列を追加しても起きませんでした。
宣言の仕方がわるかったのか。。

とりあえず、なんにしてもありがとうございました。
お陰でイベントの起こし方を学習できました。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-02-16 15:43
DataGridView.ColumnDisplayIndexChanged イベントが使用できると思います。

ただ、気をつけなくてはいけないのは、このイベントは移動された列全てに
対して呼ばれるので、イベントハンドラに処理を書くと何度もその処理が呼
ばれてしまう可能性があることです(という経験をしたので)。

例えば

コード:

--A-- --B-- --C--


という列があったとして、C列をドラッグして

コード:

--C-- --A-- --B--


このような形に並べ替えると
  1. C列が移動
  2. C列に押されたA列が移動
  3. A列に押されたB列が移動
という3回のイベントが発生します。

e.Column を見ればイベントが起こったときの目的の列もつかめそうですが。
その点に気をつければ大丈夫だと思います。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2007-02-16 16:34
ぽぴ王子さんありがとうございます。

やってみたところ見事にイベントが発生しました。

僕は、このイベントで列ヘッダのTextを
その列の番号にする操作をしたかったのですが、
このイベントだと動かした列だけではなく
動かされた列もイベントが発生するので
かえって好都合でした。

どうもありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)