- 1 名前:デフォルトの名無しさん [2008/04/22(火) 00:31:59 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ その他テンプレ>>2-5くらい
- 231 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:37:25 ]
- enumハックを思い出した
- 232 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:46:14 ]
- キモい命名法だ
- 233 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:58:18 ]
- >>230
速さは一緒 値自体に意味があるならenumじゃなくてconstの方が適切 でもpublicならconstじゃなくてstatic readonlyにした方がいい
- 234 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:14:07 ]
- >>233
知らなかった知識です、ありがとうございます。
- 235 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:35:48 ]
- constと(static )readonlyは全く別物だから、
ちゃんと調べて使い分けるようにした方がいい
- 236 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:28:29 ]
- >>235
どこがどう違うかを書いた方がいい
- 237 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:44:41 ]
- 自分で書けよ
- 238 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:48:18 ]
- constに出来るものをstatic readonlyにした方がいい理由ってなんだよww
- 239 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:26:42 ]
- >>238
メモリの節約。
- 240 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 03:30:00 ]
- ↑アホ
- 241 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 06:17:51 ]
- 基本的にconstはクラス内でprivateに定義してその中だけで使用する。
constをアセンブリやnetmoduleまたがりで参照した場合、副作用がある。 S.DLLでpublic const A = 10 M.EXEで S.Aの表示 10 public const A = 99 に変更してS.DLLだけを再コンパイル。 M.EXEを再コンパイルしない限り結果は10のまま。
- 242 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 07:48:45 ]
- constを他のアセンブリから参照すると、参照元のアセンブリにも定数が埋め込まれる。後で値を変えたらさあ大変。
数学定数みたいに、絶対に値が変わることがないもの以外は、static readonlyにしたほうが無難。 あとはSizeとかDateTimeみたいに初期化の必要なものを、定数っぽく扱いたいときに。
- 243 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:05:11 ]
- それは完全に枝葉というか性質というか…全然別という意味分からないだろ
constはコンパイル時に値が確定される定数、readonlyは書き込み不可な変数。 見えてくる違いとしては、constはコンパイル時に評価されるので使える範囲がちょっと広い。 定数式しか許されない属性指定内部やswitchのcase句にも使用可能。これらに使用される場合境界越えで あってもconstにする必要がある。 ちなみにenumの個々の値はconstなのでenumを等価に置き換えるならconstになる。
- 244 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:25:48 ]
- enumの値が変わったら大変なことになるんだな
- 245 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:27:54 ]
- 外部に公開している列挙体を不用意に変更しちゃマズいのか。
- 246 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 10:09:30 ]
- >>242
これは知らなかった。勉強になる
- 247 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 14:15:35 ]
- ところでなんでcaseには定数しか書けないの?
- 248 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 14:33:21 ]
- 定数じゃないと、複数該当することもあるからじゃない?
まあ上から順番に比較するような仕様のやつもあるが。
- 249 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:34:50 ]
- あとジャンプテーブル変換
- 250 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:23:06 ]
- 実装を簡単にするための手抜き
- 251 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:20:36 ]
- かといってVBのSelectCaseは自由すぎると思わないか?
- 252 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:37:20 ]
- selectっていうのは0,1,2,3,4...
みたいに連番で並んでると それを関数ポインタの配列みたいにしてジャンプすることが出来る だから定数じゃないとどうしようもない
- 253 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 02:00:26 ]
- バカばっかw
- 254 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:37:30 ]
- ↑暴走中。
- 255 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:48:23 ]
- >>251
バグを引き起こしかねない問題を含まない限り、自由度は高いに越したことはないよ C#は新規なんだから、switch case の構文にこだわるべきじゃないとは思った もともと、switch は C の特殊 goto label の構文な訳だし、考え方が古臭すぎる。 for 文からの脱出に break を使いたくても、switchにとられてしまうとかダサいと思うので。
- 256 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:37:15 ]
- フォールスルー不可能にもかかわらずbreak必須って時点で(ry
- 257 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:38:59 ]
- たしかに。
この辺何とかならなかったのか。 C、C++からの移行を意識してるならswitch caseと別の構文にすればいいしな
- 258 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 11:57:33 ]
- >>252
stringにもswitchは使える その場合はif(str=="a") /*case a*/ else if(str=="b") /*case b*/ else if… みたいなコードにコンパイルされる
- 259 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 16:01:00 ]
- >>258
たくさんあるとDictionaryを使うらしいぞ
- 260 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:35:22 ]
- #regionはIDEで出来るようにした方がいいと思う。
- 261 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:49:50 ]
- それを言語そのものに組み込むところはC#の特徴というかアピール
IDEサポートを謳ってる言語なんだから
- 262 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:29:25 ]
- C#3.0の自動プロパティ作ると、[xxx]k_BackingField(うろ覚え)とかいうような変数が内部で生成されてるらしいんだが、これにソースコード上で属性を付加する方法ってありますか?
自動生成のプロパティにつけても自動生成される変数には付加されないみたいです。
- 263 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:54:51 ]
- >>261
C++にもあるよ。 てかそれなら両方サポートすればいいじゃん。
- 264 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:02:54 ]
- >>262
> 自動実装するプロパティ (C# プログラミング ガイド) > > 自動実装したプロパティでは、属性は使用できません。プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します。
- 265 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:05:39 ]
- >>264 ('A`)マンドクセ
- 266 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:21:12 ]
- プログラミングC#っていう本を買おうかと思ってるんだけど
これ2年前に第4版が出たのが最後で、C#2.0対応とかVS2005対応とか書いてるよね もう今はC#3.5とかVS2008もでてるけど、近いうちに第5版とか出たりしそうかな? それとも第4版の内容でまったく問題ない?
- 267 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:27:06 ]
- 普通に考えれば最新の機能には対応してない。それだけだ
- 268 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:32:47 ]
- C#3.5って出てるの?
- 269 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:39:45 ]
- >>267
まあ、そうだね。サンクス >>268 ごめん、嘘ついた。NET Framework 3.5でもC#は3.0のままです ちょっと調べてたら原書のProgramming C# 3.0ってのは去年末にでてるんだな 日本語版でないかなー
- 270 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:43:57 ]
- 始めたばかりの俺はそれを待っている
今は猫と初めてを併用して学習中
- 271 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:02:27 ]
- 原書買えよ
- 272 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:10:19 ]
- 質問です。
DataGridViewで自動カラム生成機能ってありますけれど あれのカラムのフィールド名はこちらから指定できないんでしょうか? (特にReflectionを使った手法で) プロパティに属性つけるとかしたら上手くいくんじゃないかと思ってるんですが… ご存知の方いましたらお教えください。
- 273 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 03:11:04 ]
- 自動生成したらフィールドも何もないと思うが、
カラムのフィールド名って具体的に何を指してる? デザイナで列を追加したときにフォームに作られる Column*フィールドの名前のことか?
- 274 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:16:50 ]
- >>273
すいません、あまりにも説明不足でした。 フォームのカラムのヘッダに表示される文字列のことです。 プロパティ名がそのまま文字列変換されて表示されているようなので 多分どこかで設定できるんではと思っているのですが…
- 275 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:41:53 ]
- Select()でプロパティ名を変えた匿名型にすればいい
var e1 = ...; // 元のデータソース: IEnumerable<Hoge> var e2 = e1.Select(x => new { Bar = x.Foo, ... });
- 276 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 08:36:22 ]
- 知らない文法だなぁと思ったら2008ですか…。
ちょっと調べてみます。ありがとうございます。
- 277 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:45:58 ]
- Seleは2005でもあるんじゃ?
ラムダはデリゲートになおせばいいよ
- 278 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:47:00 ]
- Selectな
- 279 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:50:05 ]
- ごめん嘘だ
msdn.microsoft.com/ja-jp/library/bb548891.aspx 3.5からだった
- 280 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:57:12 ]
- 2005でも似たようなのを作ることは出来るがラムダ式がないと使い物にならない
- 281 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 06:12:12 ]
- 2008に慣れてしまって、もうLastOrDefault()相当のコードを書くことすら面倒くさい。
- 282 名前:デフォルトの名無しさん [2008/05/19(月) 14:21:56 ]
- WindowApplicationを作っています。
別スレッド(固定周期)でDBの値を引いてきて、Form(メインスレッド)のラベル.Text属性に値を設定する という処理を行なっていますが、 表示されるのは最初だけで、その後DBの値を変えてもラベルの値が変更されません。 どうしたらいいかご教授ください。
- 283 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 14:29:09 ]
- >>282
>>227と同じかな?
- 284 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:18:45 ]
- 同一のストリームをBinaryReaderとBinaryWriteに食わせた場合、
Closeを呼び出す順番ってどうすればいいの? ついでに、フィールドで持っているストリームをメソッド内のローカルの BinaryReader/BinaryWriterに食わせた場合、仮にメソッド内でClose呼んだりusingを使ったり することを避けたとしてもBinaryReader/BinaryWriterがGCに回収されるタイミングで ストリームも強制的に閉じられてしまうんだろうか?
- 285 名前:デフォルトの名無しさん [2008/05/19(月) 20:14:51 ]
- 今、関数の引数を設定したλ式を作る時、以下のようにしているのですが、
もっと良い方法または、ライブラリにこれと同様なことをするための物はあるのでしょうか? static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1) { return () => f(a1); } ... static Func<TResult> SetArg<T1,T2,T3,T4,TResult>(Func<T1,T2,T3,T4,TResult> f,T1 a1,T2 a2,T3 a3,T4 a4) { return () => f(a1,a2,a3,a4) ; }
- 286 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:50:34 ]
- >>285
>static Func<TResult> SetArg<T1,TResult>(Func<T1,TResult> f,T1 a1) >{ > return () => f(a1); >} ライブラリに同等のものはないしもっと良い方法もない。 でもここにあげられたSetArgメソッドを使うぐらいなら a1 => f(a1) と毎回インラインで書けば十分だと思うよ。
- 287 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:57:42 ]
- >>285
今までC++使っていた人? C++がstd::bind1stやstd::bind2ndをありがたがって使っているのは 今までC++に簡潔なラムダ式が存在しなかったという特殊事情もあるので C# 3.0で無理してまねる必要は無いと思うよ。 C#だとSetArgみたいなのを作ってもインライン展開されないしね。
- 288 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:59:06 ]
- なんかすごいレベルの高い話してる・・・
- 289 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:00:24 ]
- 慣れてないだけだよ
解ればそんなに難しくない
- 290 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:10:48 ]
- >>284
Disposeは複数回呼び出されても大丈夫だから,続けて呼びさえしていれば問題ないんじゃね BinaryReaderやBinaryWriterはファイナライザを実装してないから それらがGCされるときにストリームが勝手に閉じられることはないよ ストリームへの参照がどこかで繋がってる限りは大丈夫
- 291 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:44:31 ]
- >>290
ありがと。
- 292 名前:デフォルトの名無しさん [2008/05/19(月) 21:55:05 ]
- >>286
実はそれがちょっとまずかったので、関数化したという事情があるんです、たとえば。 List<Func<int>> list ; for(int i=0;i<100;i++) { Func<int> tmp = () => i + 5 ; list.Add(tmp) ; } とすると、プログラムする側の気持ちとしては i には 1 , 2 , 3 , 4 , 5 となって欲しいのですが 計算が遅延しますので、i = 100 , 100 , 100 ... となってしまいます。
- 293 名前:デフォルトの名無しさん [2008/05/19(月) 22:29:40 ]
- いやそれは遅延のせいではないんじゃ…
- 294 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:31:29 ]
- C#のデリゲートはクロージャでない
- 295 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:34:25 ]
- 遅延させたいんでしょう、つかその必要がなければ、Lambdaなど使わずにその場で計算すれば済むわけだし。
- 296 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:39:05 ]
- Cocoaバインディング便利そうなんだけど、C#でUI作るとき同じようなもの作ったりしてる人おる?
- 297 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:40:44 ]
- >>292
List<Func<int>> list ; for(int i=0;i<100;i++) { var j=i; Func<int> tmp = () => j + 5 ; list.Add(tmp) ; } こうすればお望みの動作にならんかったっけ?見検証ヾ(゚д゚;) スッ、スマソ。
- 298 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:44:05 ]
- ListView.ItemSelectionChangedイベントで選択Itemが変化したのを検出し、
別の詳細表示フォームの表示を更新する、といったことをしています。 何も選択していないときは、詳細表示では何も表示したくないので全て消去しているのですが、 ItemSelectionChangedイベントは、選択が切り替わるときに「選択解除」と「選択」の2つのイベントを発生させます。 そのため「表示の解除⇒再表示」となってしまい、妙なチラツキが発生してしまっています。 1回目の解除用のItemSelectionChangedイベントでは、次に選択が入るかどうかが分からないので、 どうやってチラツキを抑えようか困っています。 この問題を改善する方法はないでしょうか?
- 299 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:04:48 ]
- >>292
こういうので良いんじゃない? var list = Enumerable.Range(0, 100).Select(i => (Func<int>)(() => i + 5)).ToList();
- 300 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:25:06 ]
- >>298
SelectedIndexChanged使えば?
- 301 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:04:34 ]
- >>297
やり方はそれでOK そのコード自体はNullReferenceExceptionになるけどなw てか、C#でラムダ式に(パラメータ以外の)変数を入れる場合は、 基本的にスコープを最小限して、参照型ならコピーを使うというのは for文の条件に不動小数点数を使わないのと同じくらい常識だと思う あと、ラムダ式をごちゃごちゃ弄る場合は式木使った方がいいと思う MSDNのどこかに載ってるExpressionVisitor使えばいろいろ出来る
- 302 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 02:15:36 ]
- intはいつから参照型になったんだ
- 303 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 03:25:22 ]
- >>300
それも試してはいるのですが結果は一緒でした。 マニュアルには複数選択のListViewの場合は削除と追加の時に呼ばれるとありますが、 これはMultiSelect=falseの設定でも同じ仕様で動いていました。 何か設定が足りないのでしょうか? (アイテム選択状態) ⇒別のアイテムを選択する ⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数0) ⇒ListView.SelectedIndexChangedが呼ばれる(選択要素数を確認すると要素数1) SelectedItemsだけでなく、SelectedIndicesの内容も同様です。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 03:43:33 ]
- 選択解除するタイミングはもっと限定できるんじゃないの
そのタイミングでだけ消せば
- 305 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 08:46:40 ]
- >>303
何も選択してないときの処理を別コントロールにフォーカスが移ったらって条件にすれば?
- 306 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 09:09:56 ]
- PictureBoxかPanelのようなコントロールをウィンドウ上に貼り付ける場合、
一画面でどれくらいの個数までが実用的な範囲なのでしょうか? イベントをとりたいのでマーカーとして貼り付けたいのですが、 個数が多いとパフォーマンスが落ちそうで…
- 307 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 09:51:26 ]
- >>306
で、君の環境で試したらいくつでパフォーマンスが落ちたんだい?
- 308 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:06:46 ]
- Windowsアプリケーションから
非同期で、サービスプログラムの状態を知りたいんだけど、 1.別スレッドで周期的にサービスプログラムの状態を監視し、表示する。 以外に何かよい方法ありませんか?
- 309 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 11:23:04 ]
- そのサービスは既存のもの?
- 310 名前:308 mailto:sage [2008/05/20(火) 11:54:44 ]
- >>309
新しく作成したサービスプログラムなんですが、中身の仕様は変更できません。
- 311 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:51:11 ]
- Panelの上にいくつかのボタン等をおいて、
そのPanelの上に同じようにPanelを重ねていって場面ごとに最前面にしたいんだけど、 Panelの大きさって全く同じじゃないとだめなのね。 大きさが違うとPanelの中のPanelって事になっちゃうみたい。 それとBringToFrontで最前面にするよりVisibleですかそうですか。
- 312 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:59:09 ]
- よく分からんが、それはTabControlで済ませることができない操作なのか?
- 313 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:03:50 ]
- >>310
相手が固定ならそれないりの方法あると思うけど、 それが何かは場合によるから、普通にポーリングでいいんじゃないかな。 サービスへの通知みたいに取れることを期待している?
- 314 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 14:28:44 ]
- >>311
試してないけど、ツリーで位置を確認して移動すれば解決する事じゃないの?
- 315 名前:314 mailto:sage [2008/05/20(火) 14:31:16 ]
- >>311
いやわかった。 最前面に置いたPanelが小さいと、下のPanelが見えるって事なのかな だから最前面以外のVisibleをfalseにしなきゃいけないんだなっていうことを言いたいのかな だとすればそれは当然。
- 316 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:58:12 ]
- >>312
そだよ。でもデザイン的にタブが無い操作って事。 >>315 見えるっていうか、大きいPanelに小さなPanelが乗っかっちゃうと、小さなPanelをVisibleをtrueにしても大きなPanelがfalseなので結局表示されないって事なんだ。 たとえばPanel1とPanel2があって、Panel1に重なって小さなPanel2があったとします。 んで別のところにある二つのボタンでPanel1とPanel2を切り替えるために private void button1_Click(object sender, EventArgs e) { panel1.Visible = true; panel2.Visible = false; } private void button2_Click(object sender, EventArgs e) { panel1.Visible = false; panel2.Visible = true; } こんな風に書くじゃないですか。 ところがPanel2はPanel1の中のパネルと判断されて表示されないわけです。 ちなみにPanel2が完全にPanel1に含まれていなくても大きさに関係なくPanel1上のものと判断されてしまうのです。 なので大きさも位置も完全に同じにしないと別々のパネルだと判断されないって事でした。 そして大きさも位置も完全に同じでもPanelをBringToFront()で最前面にしようとしてもダメでした。
- 317 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:58:37 ]
- >>316
それこそ>>314で直るはずだろ 今VS起動できないから具体的になんて名前のウインドウだったか忘れたけど ツリー表示でPanel2がPanel1の子になってるはずだからD&Dして兄弟にしてやればいい
- 318 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:45:12 ]
- >>317
そんなツリーがあるんだ!? 従属関係を指定できれば解決する簡単な問題だったので疑問でした。 探してみます!
- 319 名前:デフォルトの名無しさん [2008/05/21(水) 16:57:26 ]
- ドキュメントアウトライン ビューだ!
- 320 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:11:00 ]
- >>319
今ちょうど検索してて見つからなくて困ってたんだけどありがとう!!! あった!
- 321 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:23:16 ]
- ただ確認できるだけで従属の変更は出来ないのね。
>>317のように親子を兄弟にすると位置自体も変わってしまう。 まあでも確認できるだけでもかなり便利になりました。
- 322 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:33:33 ]
- コントロールの親子あるいは包含関係なら変更できるけど?
そもそも、間違ってPanel2をPanel1に入れてる時点で自分に非があるのに あたかも処理系やIDEが悪いかのような論調で書かれも困る 結論としては、デザイン時にコンテナを意識してないお前が悪い てか、コンテナ意識しないとAnchorやDock使えんだろ
- 323 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:15:49 ]
- ↑なに言ってるの?w
- 324 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:22:47 ]
- 結論としては(キリッ
って事だろ。 何の役にも立たないレス。
- 325 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:12:34 ]
- >>322の言っている意味が分からないような馬鹿が偉そうに書き込まないほうがいいぞ。
どう考えても >親子を兄弟にすると位置自体も変わってしまう。 という頭の悪い考えに対する返答だろ。 コントロールの位置座標というのはコンテナに対する相対座標なんだから、 親コンテナが変われば当然Form上における絶対座標は変わるに決まってる。 そんなことも理解できない馬鹿はおとなしくWPFアプリケーションで視覚的に 階層構造を指定できるものを使っておけということ。 フォームデザイナに頼りっぱだからそうなる。 コード上で親コンテナ.Controls.Add()で追加していけば思うような構成にするのは極めて容易い
- 326 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:40:50 ]
- コントロールの親子あるいは包含関係はどうやって変更するんですか?
- 327 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:03:26 ]
- Controls.Addすれば子になるんだろ
Controls.Removeしてから別のコントロールにAddすればいいんじゃないか
- 328 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:11:25 ]
- 変更前親コンテナ.Controls.Remove(子);
変更後親コンテナ.Controls.Add(子);
- 329 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:17:28 ]
- とういうことはPanel1に重ねてPanel2を配置して、
Panel2はFormの子にしたい場合はコードからしか設定できないってことでしょうか??
- 330 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:32:28 ]
- タブコントロールで、タブ部分だけ消したほうが早そうな
- 331 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:33:19 ]
- Panel2をFormに追加してから、サイズ変更でPanel1の内側に持ってけ。
|

|