人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【C#】VisualC# 2008 Expressについて質問です。無効にしたDatagridViewButtonCell
を派生させたクラスに対し、特定の条件でボタンを押せないようにしたいと考えています。

Enableの設定をすることで押せないボタンにすることはできたのですが、
色が、デフォルトの薄い灰色になってしまいました。
(色は既存のGUIに併せて、濃い灰色に設定する必要があります。)

・押せない濃い灰色のDatagridViewButtonCell

を作るための方法についてアドバイス頂きたく宜しくお願いします。

なお、「質問者のスキルから考えられる想像可能な対応方法」を以下に示します。
もしコーディング可能であれば教えていただけると助かります。

?無効ボタンの色のデフォルトを一時的に変更する(実装可否不明)
?特定の条件の時は、DatagridViewButtonCellでクリック時に処理されるメソッドのメンバを動かさずReturnする(実装可否不明)


●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:C# EXPRESS GUI アドバイス クラス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● brand123
●0ポイント (はてなにより削除しました) ◎質問者からの返答

関係ないことが書かれているためこの回答はNGです。


2 ● heke2mee
●100ポイント

こちらのサイトに「Windows フォーム DataGridView コントロールのボタン列にあるボタンを無効にする」方法があります。

その中にPaintをオーバライドしてボタンを描画している部分があるので参考になると思いますよ


http://msdn.microsoft.com/ja-jp/library/ms171619.aspx

◎質問者からの返答

回答ありがとうございます。

// Draw the disabled button.

ButtonRenderer.DrawButton(graphics, buttonArea,PushButtonState.Disabled);

を実行する時点でデフォルトの薄い灰色になるような・・・・気がします。

[追記]

上記処理を行わないで色の設定を行った場合は、色の設定ができます。

またクリックする時の処理を行わないこともできるのですが、、、、

無効にしていないため押されたらボタンがへこんでしまうという問題が

が出てきてしまいます。

違和感があるので気になります。

マウス操作を殺すことができたら、、、、

もしくは上から絶対座標の透明コントロールをかぶせることが出来たら

もんだいないのですが、、、、、


3 ● HALSPECIAL
●100ポイント ベストアンサー

DatagridViewで使ったことはありませんが、

IMessageFilterを検討してみてはいかがでしょう。


どういう事かと言うと、

アプリケーションにメッセージフィルタを登録ておきます。

コントロールがクリックされた際、コントロールのイベントが発生する前に、メッセージを捕捉して殺してしまうのです。


こちらが参考になると思います。

http://d.hatena.ne.jp/aharisu/20090504/1241453699

◎質問者からの返答

知らない対応方法でしたので大変勉強になりました。

回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ