2007年3月30日金曜日

DataGridViewのフィルター

相変わらず設計と一緒にコントロール周りに着手。現在ピークを迎えつつあるのがやっぱりDataGridView。MultiRowでは簡単にできたアンバウンドでのフィルタ処理がDataGridViewでは簡単にいかないんだよなぁ。

サンプルソースを見る限り、バインディングをなぜ使用しない?という風に見えるんだけど、ある程度作ってしまった以上そこは通さないといけないんだよねぇ。今のところの想定は、DataGridViewRowのVisibleを設定することによってフィルタがかかったようにすればいい、というのと「どっかのイベント」でフィルタ処理の開始を行わないといけないってところまで来た。

んー表示のみ、と考えると内部でバウンドさせてしまえばいいんだろうけどなぁ。

2007年3月18日日曜日

DataGridViewでReDraw

MSDNフォーラムにも同様の話題があったので自分でもちょっとトライ中。

最初は単純にOnPaintあたりで制御かませばいいかな、なんて思っていたんだけどどうやらまだまだ複雑みたいで。どのタイミングで描写が行われるかを、もう少し掘り下げて調べないとわからないかなぁ・・・。

今のところRedrawプロパティ作って、そいつのSetterではFalse→TrueになったときにはUpdateメソッド呼ぶようにしただけ・・・でもUpdateメソッドって見た目で「更新された」ってのがわかるから、違う方法があるんだろうなあ。

2007年3月12日月曜日

Processクラスでの別プログラム実行

ようやっと今日になって解決。上にも書いてある「別ユーザーでのAP起動」。

自分の中で勘違いをしていたのが、「別ユーザーでログインした状態でプログラムを実行する」じゃないといけないと思っていたところかな。

結論としては「別ユーザーでプログラム実行だけど、ログインしている必要はない」ってところ。というかProcessクラスでは別ユーザー起動は制約が多く、正直今のままでは使えない(久々にFrameWorkの中を逆コンパイルして調べた)。

別ユーザーで起動するサンプル自体はMSのサイトからもDLできるので、方法はすぐにつかめたんだけど、それをFramework使ってやるってのがさっぱりだったのよねぇ。結局Frameworkでは無理で、APIを利用するしかないってわかったんだけど。

とりあえず一つ解決。でもまだまだ後に控えているんだよなぁ・・・。

2007年3月10日土曜日

コンボボックスの謎現象

先週からずっと悩んでいるある現象。

それはEnterイベントが発生していないにもかかわらず、コンボボックスがハイライト状態になることがある、ってところで。最初は自分で拡張した部分が原因でそうなってると思っていたんだけど、テストする時にそのあたりのロジックを全てはずしてみても発生したことから、結構根が深そう。

たぶん「ほかコントロールのEnterイベント中に特定の処理を行うときに発生する」んだと思うんだけどなぁ。ちょっと前のChekedListBoxがそうだったし。大本のコンボボックスで、どのタイミングでハイライト処理が行われているか、が見つかればもう少し対応が見つかるんだけどね。Reflector!を使って覗いていても、未だ解らず・・・。

2007年3月8日木曜日

なんというか、まあ

社会経験の浅いパートナーの社会マナーどう教育してますか?(@IT掲示板)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37183&forum=33&90

このスレッドがすごい勢いなんだけど・・・。
なんというかキツイな。どうしてそこまで、自分のやってきたことは全て正しい、というのか、相手が自分に合わせようとしない、と思うのか。<br><br>逆だと思うんだけどねぇ。相手が自分に合わせるんじゃなく、自分が相手に合わせないと。PMだとかそういった立場ならなおのこと。

ウチの社内にもそういう人間がいるからなぁ。人ごとじゃあないんだけどね。

2007年3月2日金曜日

起動が遅い

.Netアプリの宿命ともいえる起動速度の遅さ。

今の自分の仕事でもまさにその問題が勃発中で・・・。今のところ原因は某社のMultiRowコントロール。こいつが絡んだAPがのきなみ起動に時間がかかる。
色々調べて入るんだけど、ネックとなるのはテンプレートの情報らしく、正直手が出ない領域だったり。それとやはりコントロールが多い画面は、どうしても起動するまでは時間がかかるんだよねぇ。

InitializeComponentの中身な話なんで、正直どうしようもないんだよね。ここを解決しようとすると、完全に自前でコントロールを用意してしまうくらいしかないんだよなぁ。そこまでできるんだったら、サードパーティのコンポーネントなんて利用しないんだが・・・。