- - PR -
TabControl のページタイトル部の BackColor を変更したい。
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-31 23:59
Jitta さんのご指摘有難うございます。
リソース解放について、補足します。システムBrushを使った場合には解放が要らないですが。私はタブの背景色、前景色をデザイナから設定できるように、システムBrushでなく、カスタマイズBrushを使っています。ですので、解放が要ると思います。説明不足すみませんが、サンプルコードを参考してください。
selectedBgColorなどをプロパティにして、タブの背景色、前景色、フォントなどをデザイナから見やすくようにカスタマイズできます。 _________________ 使いやすいOnline Editorでオンライン作品(写真、小説、エッセイなど)を気軽に掲載し、コメントします -- Uprush http://uprush.net [ メッセージ編集済み 編集者: uprush 編集日時 2007-11-01 00:00 ] [ メッセージ編集済み 編集者: uprush 編集日時 2007-11-01 00:09 ] | ||||||||
|
投稿日時: 2007-11-01 07:01
uprushさんを責めるつもりは毛頭ないので、そのように受け取られたなら、ごめんなさい。
私が言いたいのは、 * サンプルを鵜呑みにするな * 理由を考えろ ということです。結論は、そのケースでしか有効ではないが、結論にいたる理由はあらゆるケースに応用可能だからです。 uprushさんのように、ブラシを作っているなら、Dirposeの必要があります。 ただ、e.Graphics は不要だと思います。 | ||||||||
|
投稿日時: 2007-11-01 08:18
Jitta さんフォローありがとうございます。
System.Brushes だからというよりは(これはこれで正しいけど)自分が作ったブラシじゃないから解放しない(してはいけない)ということですね。逆に自分が作ったブラシであれば責任を持って解放する必要があるよと。 そう考えると、e.Graphics を解放してはいけないというのがわかりますね(自分が作ったものじゃないから)。
ちょっと待ってくださいな。 元々の話は DOBON.NET さんのところにあったサンプルについての話であったと思います。 uprush さんの出してくださったコードでは確かに自分でブラシを作っているわけで、その点では解放が必要です。この点で uprush さんの指摘は正しいです。 ですが、少なくとも最初の私の発言はこのコードを元にした発言ではありません。 DOBON.NET さんのサンプルでは System.Drawing.Brushes を使っているわけで、それは解放してはいけないという話です。 少し話が混乱しているようです。 このあたりは Jitta さんも指摘されているように、解放する理由を考えれば解放して良いか悪いかは判断できると思います。何でもかんでも解放していいわけではありません。特に uprush さんのコードでも e.Graphics は解放すべきではありません。 解放する理由について考えてみてください。 -- System.Brushes → System.Drawing.Brushes に修正 orz _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 [ メッセージ編集済み 編集者: ぽぴ王子 編集日時 2007-11-01 12:57 ] | ||||||||
|
投稿日時: 2007-11-01 09:13
今の話題では重要なポイントではなくて、細かい話ですみませんが、
>System.Brushes System.Drawing.Brushesですよね。 #ちょっと気になったので^^; | ||||||||
|
投稿日時: 2007-11-01 09:19
多くの場合それで正しいですが、あてはまらない場合もあり得ます。
も同様です。 「他に誰も解放するはずがないもの」は自分で解放しなければなりません。 逆に、「誰かが解放するはずのもの」を自分で解放してはいけません。 「どうあるべきか」は扱っているオブジェクトの出生や文脈などによって変わります。 この掲示板やほかの掲示板、自分のブログなどでも何度か書いていますが、「誰がそのオブジェクト(インスタンス)を作ったか」に注目するのではなく、「そのオブジェクト(インスタンス)を解放する責任は誰にあるのか」に注目するべきです。 「オブジェクト(インスタンス)の「所有権」が誰にあるのか」と考えると、分かりやすくなると思います。 [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2007-11-01 09:20 ] [ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2007-11-01 10:10 ] | ||||||||
|
投稿日時: 2007-11-01 12:58
ぐはっ!(吐血) …そうでした。指摘ありがとうございます。 直しておきました。トホホ。
フォローありがとうございます。 なるほど。自分が作ったからといって、誰が解放すべきなのかは一概には言えないということですね。 たまたま自分が new したインスタンスは自分で Dispose するべきということが多いけれども、もしかしたら誰か違う人(…人?)が Dispose する役割を担っている場合もあるですよと。そうした場合は自分が作ったからと言って勝手に解放しては(・A・)イクナイ! ということですね。 # 例えばインスタンスを作って誰かに渡す(そして渡された方が管理する)とか、そんな場合かな 結局のところ、その都度確認せよってことになりそうですね。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2007-11-01 16:29
全面的にその通りです。 | ||||||||
|
投稿日時: 2007-11-01 17:53
議論をしているわけだから、気にしないでください。 Jittaさんの指摘通り、私が書いたコードにも、e.Graphicsの解放は要らないことが分かった。有難うございました。 _________________ ブログ http://uprushworld.blogspot.com/ 助君 -- あなた専用のカスタマイズ ウェブナビ http://www.sukekun.com/ A website and community for programmer http://uprush.net |
«前のページへ
1|2|3