1 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 21:32:32.95 ID:RzRn9VkL0] ふらっとVisual C#,C♯,C#(初心者用) このスレッドは 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 関連スレ ふらっとC#,C♯,C#(初心者用) Part91 toro.2ch.net/test/read.cgi/tech/1335089085/ C#, C♯, C#相談室 Part71 toro.2ch.net/test/read.cgi/tech/1332575004/ こんな感じでソフトウェア板に立てたらどうかな
2 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 21:41:40.86 ID:O5VqGHkR0] ─ここは、プログラム板における同名スレにおいて、 IDが付与されないがため生じる定期的な荒れ進行を度々経験し、 疲れてしまった同スレの住人が、透明あぼーんの活用でまったりと 本来のスレの目的を果たし続けるために設けられた、 一種の避難所です。
3 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 21:48:33.25 ID:k6WQuHfJ0] ム板開いたのかと思ったわ 避難所part1で良かったんじゃね?
4 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 21:56:27.84 ID:O5VqGHkR0] >>3 感情的になった出て行け論者が立てたスレなので、 スレタイ名がメチャクチャになってしまったんだ。すまない。
5 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 22:02:59.89 ID:4B8P7eLr0] 荒れ気味の板がIDなしだと大抵ろくな事にならないのは分かるが、この板でする話なのか
6 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 22:08:52.32 ID:O5VqGHkR0] ム板から逃れる先として、ソフトウェア板以外に何かあるかな?
7 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 22:45:50.27 ID:ztuW7M4rO] ム板でやれ
8 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 22:49:38.04 ID:O5VqGHkR0] >>7 巣に帰れってことだな。言い返す言葉もないよ。 だが、避難所を同じ板に作ってもしょうがないからな。
9 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 22:55:41.61 ID:bO5QxnlI0] 荒れてる時はこっちに誘導したらいいんじゃないかな
10 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 22:57:29.91 ID:O5VqGHkR0] まあ、あっちに来た質問を無理にこっちに誘導する気はあんまり無いんだ。 向こうでも書いたけど、あっちのスレが回答不能なレベルに達してるってわけじゃないし。 むしろ、「IDがあった方が議論しやすい」と感じた人間だけが、こっちで議論すれば良いと思ってる。
11 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 23:07:50.71 ID:O5VqGHkR0] こっちを擁護しておいてなんだが、これで本スレのテンプレに こっちのスレを追加すべき/すべきでない議論とか巻き起こるのは嫌だなあ。 テンプレ周りの変更議論はもめるし。 もめるくらいなら追加したくない。
12 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:10:39.92 ID:8roaiKjI0] 問題は回答者がここにくるかだな
13 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:11:12.03 ID:bO5QxnlI0] 俺が一番回答してるから俺がいれば大概大丈夫だろう
14 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 23:17:43.49 ID:O5VqGHkR0] >>12 俺も一応回答者。どんくらい回答したかまでは覚えてないけど。
15 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:34:02.35 ID:8roaiKjI0] じゃあ、ちょっと質問 インターフェイス使うと改変に強いっていうけどプロパティとどう違うの? プロパティも内部の構造変えても他のクラスに影響がない 影響が出るとしたら、プロパティの型を変更した場合 インターフェイスも引数の型変更したら結局使いものにならないし 改変に強いって説明の仕方おかしくない? 内部の違うクラスを同じようにアクセスできるのを明示するということならわかるけどね
16 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:43:32.60 ID:LlORaYbR0] クラスというのは、実体を作れる型。 インターフェースとしいうのは、実体を作れない型。
17 名前:名無しさん@お腹いっぱい。 [2012/04/26(木) 23:45:23.62 ID:O5VqGHkR0] 「改変に強い」のは、インターフェイス自体の改変ではないよ。 改変に強い、って説明自体確かに誤解を招く表現で、 実際は「内部実装を気にしなくて良い」が正解だと思う。 インターフェイスとはちと違うけど、Streamなんかその最たるものじゃない。 Stream自体が何をソースにどうやって実現されているかは気にしなくてよくて、 処理する側はStreamクラスのオブジェクトに対して必要な処理(メッセージ)を要求すればいい。 インターフェイスを定義する、ってのはそれだけのことでしかない。 「Hoge(FileStream stream)」って定義したメソッドより、「Hoge(Stream stream)」って定義されたメソッドの方が、 汎用的に使えるじゃない。
18 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:54:34.76 ID:bO5QxnlI0] 改変に強いっていうのはどうなんだろうな 個人的には別に強くないと思うが interfaceごしだと実装クラスを入れ替えられるけど 改変前と改変後の2つの似たようなクラスを両方保持して interface越しにどっちを使ってるか分からなくするなんて考えただけでゾッとする 一つの具体クラスをただ書き換えるほうがずっといい だから改変に強いと言うよりは ライブラリを作る側が使う側に処理を実装してもらう時に使うものだと思うよ IComparableを実装してもらってSortメソッドで使う比較関数に利用したり まあC#3.0からラムダ式が使えるからそういう用途はもうほとんどお役御免だけどね interface自体ほとんどお役御免といっていいと思う ライブラリに残ってれば使うけど自作する意味は殆ど無い
19 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:57:08.75 ID:65sWvc4W0] ム板って取扱いと人種的に宗教戦争余裕なのに未だにIDないのか
20 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/26(木) 23:57:13.32 ID:LlORaYbR0] インターフェースは、お役御免には、ならないと思うがな。
21 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:04:32.27 ID:Op9+MQob0] interface I{ int Hoge(); string Hoge2(); } こんなのを作るより class C{ public Action Hoge; public Func<string> Hoge2; } こんなのを作って new C{ Hoge = () =>{ ... }, Hoge2 = () => "hogehoge" } こうしたほうが早いしわかりやすいし個別に設定できて汎用性も上だから もうinterfaceを作る意味は無いはず
22 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:04:33.82 ID:M9E7Y8z10] 例えば、UnityやXNAやDxLibなどを同じように扱えるようにするにはどうするべき? ゲーム本体部分とライブラリとの丁度境界線上にあるクラスはどのように定義すべき?
23 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 00:06:06.52 ID:adJRSpDB0] お役ご免ってのは言い過ぎでしょう。後々機能追加が考えられる場合、 その機能追加に耐える様Interfaceを定義するコトなんて、(自分は)ザラにありますよ。 たとえば、画像ファイルに対して順次いろんな処理をするようなソフトを作ったとき、 最初はjpgとbmpしか対応しないでおいて、いずれpngとかtiffもやりたいなあ、と思った場合、 interface ImageProcessor { ... } class JpegImageProcessor { ... } class BmpImageProcessor { ... } なんて。 処理自体が短ければ>>18 の言うとおり、ラムダ式で十分なんだけど、 色んな段階を踏む処理の場合、処理自体をクラス化しちゃう方が後々追加し易い。 >2つの似たようなクラスを両方保持して〜一つの具体クラスをただ書き換えるほうがずっといい っていうような懸念がある場合は、interfaceじゃなくて抽象クラスでやればいいし。 共通部分は抽象クラスで処理して、後々追加したい機能毎に変わりうる部分は具象クラスに任せて抽象メソッドを定義だけしておく、とか。
24 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:10:18.02 ID:M9E7Y8z10] >>23 もっともですねぇ
25 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:13:36.43 ID:Op9+MQob0] >>23 これだと違いはファイル読み込んでビットマップ作る ビットマップをファイルに書き出す ところが違うだけじゃないの 具体的なクラス一個作って public Image(Pixel[][] bitmap) こんなコンストラクタにして new Image(JpegLoader.Load(file)) new Image(BmpLoader.Load(file)) 書きだす時は JpegWriter.Write(image.Pixels); BmpWriter.Write(image.Pixels); こんなもんでよくね
26 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 00:15:00.08 ID:adJRSpDB0] まあ、オブジェクト指向を完全に理解して常に完璧な形で実現出来てる、 なんて境地には到底達せないと思うので、今の自分の実装が正しいとも言い切れないんですけど。 Rxとか見てると、ラムダ式で全部・・・なんてのも決して非現実的ではないと感じるし、 「一つ一つの処理は短く」という基礎的なことを突き詰めていけば、 そういうこともきっとできるんだろうなあ、とは思う。 ただ、それでもinterface自体が無くなる可能性は低いだろうな。 俺は逆に、Rxが駆逐しようとしているのは開発者がclassを定義する、 という行為じゃないかと感じる。
27 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:17:24.64 ID:nbH+qoH50] 変数名につける英単語がわからなくて悩みまくる
28 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 00:17:43.59 ID:adJRSpDB0] >>25 それだと、あっちこっちで処理対象がJpegなのかBmpなのか判定しなきゃいけなくなるでしょう。 処理が読み込みと保存だけでいいなら、2箇所ぽっきりだしそれもありだと思いますけど。 Classとインターフェース作っちゃえば、インターフェースを介して処理してる本体側は大きな変更することなく、 一番アタマで対象の判定だけやって、クラスの実態をnewした後は同じ処理を続けるだけ、で行ける。
29 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 00:35:15.50 ID:adJRSpDB0] 極端に汎化するなら、こういうインターフェースを作るかな interface ImageProcessor { /// <summary>指定されたファイルがサポートされているかどうかを判定します。</summary> bool Supported(string fileName); /// <summary>指定されたファイルを読み込んで、オブジェクトを初期化します。</summary> void Load(string fileName); 〜 } 本体側は AssemblyからImageProcessorを継承してるクラスを全部引っ張ってきておいて、 private static readonl List<T> processors; private ImageProcessor processor=null; private Load (string fileName){ foreach (var p in processors){ if (p.Supported(fileName)){ processor=p; break; } } if (processor==null) throw new NotSupportedException(string.Format("{0}は未対応のファイル形式です", fileName)); processor.Load(fileName); } みたいな。こうすれば、処理本体側は変更なしで対応形式の追加が出来るだろうし。
30 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 00:35:54.03 ID:Op9+MQob0] まあ別にいいんだけどねこれでも public Image(Func<Pixel[][]> reader, Action<Pixel[][]> writer) public void Load() { Pixels = reader(); } public void Save() { writer(Pixels); } これでinterfaceと大体同等だけど最初に入れてから入れ替えができなくて無意味に汎用性が下がるし 呼び出し側もメソッドの中で何が起こるのか分からなくなってソースがわかりにくくなるんで 必要がなければ避けるべき形だよね public void Save(Action<Pixel[][]> writer) { ... } 処理の汎用化が必要でも、こんな風にライブラリ側だって必要なときに必要な物だけ渡してくれた方がわかりやすいし使う側も使いやすい interfaceを使うと呼び出す場所(たとえばSaveを実際に呼び出すところ)とそれが定義されてる場所(Save処理を実装したクラス)が離れちゃうからわかりにくくなる なにより「interfaceにそのメソッドが必要かどうか」という難しい判断をする必要がなくなるから問題がすごく簡単になる
31 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 00:40:53.37 ID:adJRSpDB0] まあ、やりたいことにあった方を選べば良いんじゃないかな。 実際、その二つの方法を提供しているライブラリも多いよ。 俺もそういうやり方することあるし。処理が端的に済む場合なんかは特に。 で、じゃあどっちかしか使わないか、っていうと、時と場合に依った。 どっちでも実現できる場合もあれば、どっちかじゃないとどうにもならん、とか 一方のやり方だとやたら遠回りなやり方になる、とか色々あったさ。 ライブラリを公開する、って観点で言うと、>>30 みたいなやり方の方が使いやすいだろうな。多分。 実際、interfaceを定義する、っていう手間はあれで結構大変だし、ホントやりやすい方でやればいいと思うよ。
32 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 01:33:59.48 ID:psMmyTva0] ただ、制限がクリアできるならabstractの方が便利だけどね interfaceで同一視したいクラスって、共通の処理がある程度有るし
33 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 01:37:13.24 ID:3wpgqpvv0] ( ・ω・)y─┛〜〜
34 名前:名無しさん@お腹いっぱい。 [2012/04/27(金) 02:38:49.18 ID:adJRSpDB0] まあ実際、interfaceとabstract classどっちが多いかっつったら、 今まで書いてきたような目的下だと、abstract classの方が多いな。
35 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/27(金) 10:42:30.93 ID:cReG2fZ90] >>22 ゲームで必要な機能だけを、ある程度そのゲームに特化した形で抽象メンバにする 間違っても汎用的なライブラリを作ろうなどと考えてはいけない
36 名前:名無しさん@お腹いっぱい。 [2012/04/28(土) 18:00:55.53 ID:dHnGlI/10] 落ちた?
37 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/28(土) 21:16:46.38 ID:uBDtGHBV0] そんな早くdat落ちするのかこの板
38 名前:名無しさん@お腹いっぱい。 [2012/04/28(土) 22:23:13.82 ID:qRaW9tis0] しないね。サーセン誤爆だ。
39 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/28(土) 22:24:15.68 ID:uBDtGHBV0] 基本プログラミングっていうのは自分でライブラリを書いて自分で使うことの繰り返しだからな 汎用性が高く使いやすいライブラリを書いていくと良いプログラムになる 使いにくく汎用性が低いライブラリを作るとソースがなんだかわからなくなったり仕様変更できなくなったりする
40 名前:名無しさん@お腹いっぱい。 [2012/04/28(土) 22:33:08.75 ID:qRaW9tis0] 最初はそれも上手く行かなくて辛いけどな。試行錯誤を繰り返していく内に、 どうすれば汎用性が上がるかが分かってきて楽しい。
41 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 09:55:22.97 ID:LSFzkJi50] さんざ苦労してライブラリ作っても、意外と使わなかったりするな 使わずに温存してるうちに陳腐化したり、もっといいライブラリが登場したり…
42 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 13:38:00.37 ID:91lLWKe20] 今必要じゃないライブラリ作ってもしょうがないよな テストもろくに出来ないだろうし
43 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 19:13:44.11 ID:hNVwJi4l0] それあるよな。必要な物書いていったらいつのまにかライブラリになってたってのが理想的。
44 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 19:16:01.56 ID:15BXN5vX0] もはやライブラリを作るほうが本来の目的になってる時、あるよねw
45 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 19:20:20.22 ID:TJFFSLOz0] 作りたいツールを思いつく→ツールに必要なパーツを作る →そこで満足する、または飽きる
46 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 19:24:44.61 ID:DeCDbekJ0] そこが楽しさだからなぁ 完成が見えた時点でやる気が無くなる
47 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 19:45:24.02 ID:91lLWKe20] デバッグが一番大変だわ コード書いてる時は楽しいんだけど バグを出すために色々やってみるとかキツい 自分が使うツールじゃなかったらまず無理
48 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 21:39:37.48 ID:5gSo7RFr0] >>44-47 よう、おれ
49 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 21:42:49.73 ID:91lLWKe20] 前スレ埋まったw ここに移動すんのか?
50 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 21:45:58.44 ID:91lLWKe20] おかしい・・・みんなどこに行ったんだ
51 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 21:47:48.20 ID:91lLWKe20] まあム板には相談室があるからふらっとがこっちにあっても 最悪質問者が誰もここまでこれなくて潰れても大して問題はないんだよな
52 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 21:47:52.52 ID:5gSo7RFr0] じゃちっと立てれるか試してくるわ
53 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 21:51:38.15 ID:5gSo7RFr0] あっ・・・ソフトウェア板様に、って貼られたテンプレをつかっちまった スレタイ・・・すまない。
54 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 21:52:29.22 ID:5gSo7RFr0] ふらっとVisual C#,C♯,C#(初心者用) Part92 toro.2ch.net/test/read.cgi/tech/1335703825/
55 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:04:03.98 ID:91lLWKe20] なんだかよくわからないことになってきたな・・・ どっちに来ても質問が来たら答えるだけだけど
56 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:09:46.37 ID:sYMu1fUT0] VC#のデザインでコピーして貼り付けた時、Nameプロパティをコピー元に似せる方法ってないですか? input_data_Box1ならinput_data_Box2とかinput_data_Box1(1)とかになってほしいです・・・
57 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:18:35.45 ID:91lLWKe20] 継承するかユーザーコントロールにしてInput_data_Boxっていうクラス名にしたらいいんじゃないの
58 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:27:06.67 ID:sYMu1fUT0] ありがとうございます 特に付加する機能のない継承をやるくらいしかないんですね
59 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:29:44.31 ID:sYMu1fUT0] 多少手間だからユーザーコントロール作るか・・・!
60 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:32:06.71 ID:91lLWKe20] 俺はなにもかもユーザーコントロールにしてる 1クラスに配置するコントロールは4つぐらいまで 超えたらユーザーコントロールにまとめる
61 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:36:51.13 ID:DeCDbekJ0] ユーザーコントロールって再利用性が全くないよね
62 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:41:21.18 ID:91lLWKe20] >>61 んなことないでしょ よく出てくる複数のコントロールの組もあるし(追加、削除ボタンの付いたリストとか) WinFormは継承しなくても基本全部いじれるようになってるから 単一のコントロールでもDock.Fillしてユーザーコントロールのなかで機能追加したりも出来るし
63 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/29(日) 22:48:34.11 ID:15BXN5vX0] >>62 俺は、コントロールのプロパティをバインドさせたりすることがよくあるから、 INotifyPropertyChangedインターフェースを実装したUserControlの派生クラスを作ってる。 他にも共通機能とかをまとめておけば、いちいち実装し直す必要ないし、便利。
64 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 22:53:51.89 ID:5gSo7RFr0] >>61 まあ、変な基準でまとめると全く無くなる。 でもたとえば、ファイルパスを入力するテキストボックスと、参照ボタンのセットとか、 意外とよく使う組み合わせ、ってのは多いからな。 >>60 のいう4つくらいまで、っていうのは何だか凄いな、と思うけど。 レイアウト系のパネル配置し出すと、4つなんて容易に越えてしまいそうなもんだが・・・
65 名前:名無しさん@お腹いっぱい。 [2012/04/29(日) 22:54:42.98 ID:5gSo7RFr0] ×パネル ○コンテナ
66 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 00:30:14.37 ID:ItxvOLfT0] 荒らしの人は相談室に行ったみたいだな
67 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 01:20:42.98 ID:MeoH7oJd0] 全部作り終わってから、ちまちまとライブラリに落としこんで行ったら動かなくなった。元に戻しても動かない(´・ω・`)
68 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 01:32:15.13 ID:EicMUz7P0] >>66 素人考えの眩暈のするような間違った内容だけど、自分の考えを書いてはいるんで別の人かな。 JITの話が出てたんで関連Tips ・JITとインタプリタは違う ・JIT結果はAppDomainをまたいで共有される ・Assemblyにする段階で構文解析終わって中間コードになってるためJITは高速 ・コールドスタートアップだとJITコンパイラの読み込みに時間がかかる ・全部NGENしとけばJITコンパイラの読み込み自体がスキップされる ・JITさせたくないならNGENしときましょう
69 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 05:39:30.54 ID:oGTSpznu0] >>67 動かなくなるようなライブラリの落とし込み方ってどうやるんだ・・・ クラス単位で名前空間移して別DLLにするだけだろ? アプリ側で随時using追加すれば動かなくなることなんてないだろ・・・
70 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 08:12:58.08 ID:Cl926K6X0] いまさらだがテンプレ抜けていたので ■備考 コードの量が多い場合は下記サイトを使うなどしたほうがいいかも ideone.com/ pastebin.com/ コードを貼り付けてrun codeのチェックをはずしてsubmitボタンを押すと コードを鯖側にアップして専用のアドレスが発行されます
71 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 16:47:11.06 ID:z/qZQlkF0] 複数のテキストボックスを入れたコントロールを用意し、 テキストボックスのTextプロパティ等をコントロールのプロパティで変更できるようソースに追記しました (デザイナーで初期値を変更すること、プログラム上で参照することが目的) デザイナーで初期値を変更することはできたのですが、プログラム上で参照することができません using ディレクティブまたはアセンブリ参照が不足しています。 とエラーが出ます 検索するとNamespaceを追記すると良いと出てくるのですが、コントロールと本体のNamespaceは同じで、 最初から付いているコントロールのTagプロパティは参照できます Modifierをprivateからpublicに変えたりもしたのですが、駄目でした ソースは次レスで書きます
72 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 16:48:09.55 ID:z/qZQlkF0] //○プロパティの追加(1例) public string Text_Box_Tag { set { input_tag_Box.Text = value; } get { return input_tag_Box.Text; } } //○本体 //Tagの代入 foreach (Control item in Text_input_group.Controls)//コントロールはText_input_group内に配置しています { if (item.GetType().Equals(typeof(Control))) { int a=(int)item.Tag;//元からコントロールにあるTagプロパティは取得できます 中身は0〜です Tag[a]=item.Text_Box_Tag;//追加したプロパティ エラー Key1[a]=item.Text_Box_Key1;//追加したプロパティ エラー Key2[a] = item.Text_Box_Key2;//追加したプロパティ エラー Data[a] = item.Text_Box_Data;//追加したプロパティ エラー } } 処理が足りていないのでしょうか? へ、ヘルプ・ミー
73 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 16:51:06.91 ID:oGTSpznu0] 一例、でわかるかよ。 そのプロパティの中に原因があるんだろ。
74 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 16:51:59.35 ID:oGTSpznu0] ン?違うな。なんだこのソース。 そもそもコンパイルできねえじゃん。
75 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 16:52:49.07 ID:oGTSpznu0] プロパティを追加したとかいうクラスの名前はなんだかしらないが、 そのクラスでキャストしなきゃそのプロパティにアクセスできるわけないだろう。
76 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 16:52:54.05 ID:ItxvOLfT0] 複数のテキストボックスを入れたコントロールのクラス名をTextBoxesControlとすると if (item.GetType().Equals(typeof(TextBoxesControl))) { //ちゃんとTextBoxesControlにキャストする TextBoxesControl boxes = (TextBoxesControl)item; int a=(int)boxes.Tag;//元からコントロールにあるTagプロパティは取得できます 中身は0〜です Tag[a]=boxes.Text_Box_Tag; Key1[a]=boxes.Text_Box_Key1; } みたいなかんじでキャストすると、追加したプロパティにアクセスできるよ Controlのままでは追加したプロパティにはアクセス出来ない
77 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 16:53:49.60 ID:oGTSpznu0] エラー、ってコンパイルエラーのことだったのね。浅はかな回答して済まん。
78 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 16:57:55.31 ID:z/qZQlkF0] >>76 なるほど クラス名でキャストしてあげる必要があるんですね 無事コンパイルが通りました ありがとうございました >>77 いえ、私の説明不足ですみません
79 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 18:03:22.34 ID:oGTSpznu0] 本スレはいよいよ崩壊しているな・・・ 回答がままならない
80 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 18:05:04.00 ID:Lf0w4ZcY0] 初心者の質問に初心者が答える正に初心者用スレッド
81 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 18:06:33.19 ID:oGTSpznu0] あの状態で答えられるエスパーは確かにあのスレにはおらんな。 たまにエスパーのいるスレがあるけど、ああいうエスパー達はどういう次元にいるのか理解が及ばない。
82 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 18:06:38.03 ID:ItxvOLfT0] あれはIDの必要性を分からせるための自作自演に違いない
83 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 18:10:32.67 ID:oGTSpznu0] ふと思えば、そもそも、あのプログラムでxcopyを使う必要はあったんだろうか・・・
84 名前:名無しさん@お腹いっぱい。 [2012/04/30(月) 18:42:57.19 ID:wDghyqrL0] >>77 コンパイルエラーと言えば、今作っている奴がコンパイル完と共にVSがエラーで落ちるorz その後再起動すると普通に動くんだが、修正するとコンパイル後に落ちる どっかのシンボル名が問題起こしているっぽいのだが情報有ったら教えて貰えませんかね?
85 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/04/30(月) 18:43:59.26 ID:ItxvOLfT0] マイクロソフトのサポートに電話すれば
86 名前:名無しさん@お腹いっぱい。 [2012/05/01(火) 09:16:04.91 ID:buWGJ5Ju0] TextRenderer.MeasureText のオーバーロードの一つ public static Size MeasureText( IDeviceContext dc, string text, Font font, Size proposedSize, TextFormatFlags flags ) proposedSizeの意味がさっぱりわからないんですが 誰かバカな私に噛み砕いて教えて下さいませんか? ちなみにバストは86cmです MSDNにはこうありますが…… When measuring text on a single line, if the proposedSize parameter represents a Size with a height dimension greater than Int32.MaxValue , the returned Size will be adjusted to reflect the actual height of the text. 1 行のテキストを計測したときに proposedSize パラメータが Int32.MaxValue より大きい高さを持つ Size を表している場合、返される Size が調整されて、実際のテキストの高さが反映されます。
87 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/01(火) 09:18:00.24 ID:buWGJ5Ju0] >proposedSize パラメータが Int32.MaxValue より大きい高さを持つ Size を表している場合 ここんところが意味不で困ってます Size.HeightはintですからInt32.MaxValueより大きいってどゆこと?
88 名前:名無しさん@お腹いっぱい。 [2012/05/01(火) 11:14:15.23 ID:K0wOwpVe0] MaxValueより大きい・・・・ジャスコだな
89 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/01(火) 11:18:40.05 ID:efkrhIsb0] MaxValueって31bit+符号で表現できる最大ってことじゃなかったっけ? ファイル長なんかだとLongも一緒につかえるよね
90 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/01(火) 11:48:39.69 ID:7uSL+LzA0] 見た感じproposedSizeに収まるテキストの最大のサイズを返すんじゃないか MSDNがバグってるんだろう
91 名前:名無しさん@お腹いっぱい。 [2012/05/01(火) 13:43:26.40 ID:qndYGAe10] DataGridViewのFillの挙動が気にくわない。 「表示幅が余ったときはFill、それ以外の時はAllCells(ExceptHeader)」みたいな挙動をさせたい場合、 DataGridViewの継承クラスで容易に実装できないもんかな・・・ FillWeightとの絡みとか考えたら大変そうっちゃ大変そうなんだけど、 元々のFillの挙動(表示幅が不足すると、見切れてしまうしサイズの変更も出来ないしで詰む)が頭悪すぎて どうにもこうにも。
92 名前:名無しさん@お腹いっぱい。 [2012/05/01(火) 13:47:06.71 ID:qndYGAe10] protected virtual CalculateColumnSizeCode とかそういうメソッドが隠れてねえかなあ、と 探したけど、それっぽいの無いんだよね・・・。
93 名前:名無しさん@お腹いっぱい。 [2012/05/01(火) 13:47:57.54 ID:qndYGAe10] ×Code ○Core
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/01(火) 20:46:32.83 ID:7uSL+LzA0] 知らんけど一個一個MeasureTextして入るかどうか調べればいいんじゃねえの?
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 00:13:17.88 ID:8lvEYvBv0] 相談室荒れてるな 韓国コピペも相談室言ったか
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 01:26:06.18 ID:ihqdrBlo0] 失礼します。改行コードについての質問です。 改行1つをRead()で読み込むと10進で1310が返ってくるのですが、 これはCR(10進で13)とLF(10進で10)をまとめて1文字として読んでいるという認識でいいのでしょうか。 だとすると、CR+LFと\u051E(16進51Eは10進で1310)とはどう区別して判定するのでしょうか。 (\u051Eなんてめったに使うものではないでしょうが。) もうひとつ、int型の1310をString.Format(string, Object)で16進変換すると"DA"が返ってます。 1310を分割して13->"D",10->"A"としているのだと思いますが、 これはどういうロジックでこうなるのでしょうか。なぜ"51E"ではないのでしょうか。 よろしくお願いします。
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 01:39:43.60 ID:8lvEYvBv0] CRが13,LFが10の2文字でしょ 2文字をいっぺんに読んで、何かよくわからない過程を経て1310に到達してるんだろうと思うけど ideone.com/FlooQ 1310は16進数だと51Eになるみたいだよ
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 03:00:20.14 ID:ihqdrBlo0] 自己解決しました。一度のつもりの処理を二度行っていただけでした。 こんなことで小一時間悩んでいたなんて・・・
99 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 05:46:56.72 ID:lw6+ZIwT0] 文字コードの制御コードはすべてアスキーコード互換じゃないかな? e-words.jp/p/r-ascii.html
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/05/02(水) 05:48:39.32 ID:lw6+ZIwT0] おIDがあるw ソフトウェア板に移動したのかw