C#, C♯, C#相談室 Part71
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/03/24(土) 16:43:24.60C#, C♯, C#相談室 Part70
http://toro.2ch.net/test/read.cgi/tech/1327570969/
Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
0492デフォルトの名無しさん
2012/04/28(土) 17:15:01.52友達とかいなそうだなw
0493デフォルトの名無しさん
2012/04/28(土) 17:16:44.34技術の世界に正当な批判なんて存在しえなくなる。
せっかく誰かが悪い作法やアンチパターンを整理しても、それが少なくとも
必用悪であるケースがないことの証明なんて出来ないからな。
0494デフォルトの名無しさん
2012/04/28(土) 17:18:31.62お前そうやって言い訳しながら嫌なことを避けて惨めな人生を暮らしているんだろ?
0495デフォルトの名無しさん
2012/04/28(土) 17:19:37.91幼稚なこと言ってないで>>481的スキームが必用になる具体的ケースを挙げてみろ。
0496デフォルトの名無しさん
2012/04/28(土) 17:21:48.99具体性がない
お前がレスからわかるのは「変」だということだけ
0497デフォルトの名無しさん
2012/04/28(土) 17:22:05.84尤もらしいことを言っているように見せてるようだけど、
自分の主観で「100%ありえない」なんて抜かす主張はそもそも破綻してるんだよ。
あと、アンチパターンを10000回読み直してきた方が良い。
貴様はアンチパターン提唱の何が素晴らしいかを何一つ理解出来てない。
0498デフォルトの名無しさん
2012/04/28(土) 17:22:32.47さっさと答えろや、どういう作りにしょうがお前らには関係ねーだろーよ
0499デフォルトの名無しさん
2012/04/28(土) 17:22:38.19する理由は?
0500デフォルトの名無しさん
2012/04/28(土) 17:23:05.140501デフォルトの名無しさん
2012/04/28(土) 17:23:08.85そう質問する理由は?
0502デフォルトの名無しさん
2012/04/28(土) 17:23:43.68FormにSendMessageしてみてはどうか。
0503デフォルトの名無しさん
2012/04/28(土) 17:25:48.95どこに100%ありえないなんて書いてるんだ。
そうする必要性があるのなら質問者が具体的に答えればよい。
君みたいなガキが相手ではそうは行かないが、人間同士のやり取りとはそういうもの
0504デフォルトの名無しさん
2012/04/28(土) 17:28:29.09バカのオウム返しで答える気がないならこちらも答える必要性はない
0505デフォルトの名無しさん
2012/04/28(土) 17:30:40.36抗鬱剤飲みながら、引きこもって2ちゃんねるを荒らすのが日課
0506デフォルトの名無しさん
2012/04/28(土) 17:31:06.61アンチパターンはきちんと読み返して理解して来たのか?
分からなかったらアンチパターン、なんて二度と安易に言うなよな。
そもそもの動機を根本原因として疑うのは全く以て結構だが、
喧嘩吹っかけるような貴様のレスには端から見ていて苛立ちしか感じなかった。
>違うというのならPanelをトップレベルウィンドウにしてFormに覆わせる必然性が
>あるケースを一つでも言ってからにしろ。
こういう書き口が煽ってるんだよ。
「こうしてはどうか」と具体例を出せるなら出せば良いし、
解決する手立てが思いつかないなら、黙ってろ。
ガキでも結構だが、ガキとしてはアンチパターンを理解出来ない大人の方がいらっしゃるのは暗澹たる気分だね。
0507デフォルトの名無しさん
2012/04/28(土) 17:33:39.33普通はどうして車輪を使わずに抱えて持つ必要があるのかと聞くだろう。
もちろん、万が一のケースとして、車輪を使えない理由があるかもしれない。
だからといって「どうして車輪を使わないのか」と聞かないのかよ。
本当中学生の論理だよな。一貫性がないから論理とも呼べないけどね
0508デフォルトの名無しさん
2012/04/28(土) 17:37:24.83貴様(笑)の煽りは俺を苛立たせる煽り。
最近、こういうおかしな奴増えてるね。
0509デフォルトの名無しさん
2012/04/28(土) 17:37:52.740510デフォルトの名無しさん
2012/04/28(土) 17:39:44.69そりゃあもう、楽しんでるからね。煽りには煽りを。
ちょっと強い言葉を使えば、最初は冷静な連中も、いとも容易く激高する。
実に面白い遊びだ。
0511デフォルトの名無しさん
2012/04/28(土) 17:39:49.940512デフォルトの名無しさん
2012/04/28(土) 17:41:13.49650 名前:デフォルトの名無しさん[sage] 投稿日:2012/04/28(土) 09:10:57.63
あんまりどうでもいい話すると荒らすよ
ポタリングに行っていたので
0513デフォルトの名無しさん
2012/04/28(土) 17:42:31.390514デフォルトの名無しさん
2012/04/28(土) 17:44:42.42で、出た案はやってみたの?
0515デフォルトの名無しさん
2012/04/28(土) 17:51:16.95>ただ、今回初めてOverrideを使うので、注意すべき点や、この方法はスマートではない場合、アドバイスお願いします。
override ってどういうことなの。FormのイベントをPanelのイベントでoverride?継承について何か勘違いしてないかな。
それともC#予約語のoverrideではなく、何か他のことを指しているのか?
子Panelのイベントで受け取ったポインタを、親Formのイベントにそのまま渡せば良いと思うよ。
0516デフォルトの名無しさん
2012/04/28(土) 17:51:44.63○カーソル位置
0517デフォルトの名無しさん
2012/04/28(土) 17:57:37.660518デフォルトの名無しさん
2012/04/28(土) 17:59:49.940519デフォルトの名無しさん
2012/04/28(土) 18:00:19.12文章から察するに、「override」を何か誤解しているようだから、
あんまり突っ込まないでおこう。
0520デフォルトの名無しさん
2012/04/28(土) 18:06:53.520521481
2012/04/28(土) 18:07:10.79>>483
PanelをDock.Fillです。
更にFormborderstyle.Noneです。
>>502
そこをもう少し詳しくアドバイスお願いします。
0522デフォルトの名無しさん
2012/04/28(土) 18:11:25.82メッセージ取得できるでしょ
>>521
OSからのメッセージ(マウスやキーボードの入力情報)を
インターセプトしていじくるってこと
0523デフォルトの名無しさん
2012/04/28(土) 18:12:49.00質問がミスリード過ぎる。
サイズを変更できないのはFormborderstyle.Noneにしているからで、
Panelと一切関係ないじゃないか。
0524デフォルトの名無しさん
2012/04/28(土) 18:13:47.86Formの上にコントロールがいくらかぶさろうとも
子コントロールのイベントを親コントロールに通知できるぞ
0525515
2012/04/28(土) 18:16:24.89>PanelをDock.Fillです。
>更にFormborderstyle.Noneです。
やっぱりそれか。作ってたよ。
ちょっとサンプルコード貼ってるからまっとき。
0526デフォルトの名無しさん
2012/04/28(土) 18:19:10.31させようと思うとWindows Messageを捕捉してかなり面倒な処理が必用になったはず。
妥協案としてウィンドウの右下のみでサイズ変更可能にするだけなら、
普通にWindows Formのマウスイベントを捕捉して処理するだけで大した苦労はなくて出来る。
0527515
2012/04/28(土) 18:20:41.39MainForm.cs
http://pastebin.com/x1mYsD5j
MainForm.Designer.cs
http://pastebin.com/RS2VCYNy
これでどうだ?
0528デフォルトの名無しさん
2012/04/28(土) 18:21:12.80簡単に枠なしや半透明とかできるのに
0529デフォルトの名無しさん
2012/04/28(土) 18:21:28.790530デフォルトの名無しさん
2012/04/28(土) 18:23:02.490531デフォルトの名無しさん
2012/04/28(土) 18:25:41.87FormBorderStyle.Sizableにしたらサイズ変更ができるのは分かってるけど、Formborderstyle.Noneにしたいという要求もあるってことか?
ならば質問でFormborderstyle.Noneにもしたいと言わないと伝わらないだろうな
で解答じゃないけど、もしNoneにした理由がタイトルバーを消したいというだけの理由なら
Sizableにした上でタイトルバーを消すようなRegionを設定するという方法や
Form.Textを空白&Form.ControlBoxをfalseにする方法もある
0532デフォルトの名無しさん
2012/04/28(土) 18:26:37.86int x=y=0;
のようなことって、C#でどう書くんですか?
0533デフォルトの名無しさん
2012/04/28(土) 18:26:39.90どうしようか迷ったけど、マウスイベント、って何のこと(Down/Up/...)を言ってるのかわからんかったので、
いきなりラムダ式でDelegate渡して・・・ってやったら、
質問者が自分のやりたいことをやるためにソースを直すのに、また四苦八苦させてしまうかもしれんな、と思ったので。
0534デフォルトの名無しさん
2012/04/28(土) 18:27:13.23int x = 0, y = 0;
0535デフォルトの名無しさん
2012/04/28(土) 18:28:46.470536デフォルトの名無しさん
2012/04/28(土) 18:29:06.87こいつ昨日ふらっとで同じ質問して相手にバカとかアホとか逆ギレしてたヤツだからスルー推奨
0537デフォルトの名無しさん
2012/04/28(土) 18:30:00.57int x = y = 0がスマート、
int x = 0, y = 0;がスマートでない、と感じる理由で良い。
リテラルを2個も使うのが、後で変更するときに保守性下げるって言うなら、こう。
-----
private const int InitialValue = 0;
/* 略 */
int x = InitialValue,
y = InitialValue;
0538デフォルトの名無しさん
2012/04/28(土) 18:31:16.05逆ギレさせるだけの原因があるからかもしれない。
とりあえず答えてみるよ。
0539デフォルトの名無しさん
2012/04/28(土) 18:31:50.62そのやりかたは知っているけど
int x=y=0;
みたいなやり方をどこかで見たんですよ
これに近い感じで書けないですか?
0540デフォルトの名無しさん
2012/04/28(土) 18:33:49.12スマートとか言っているのは俺じゃないから
よくメソッド内で使い捨ての変数を宣言するときに
簡単に書けないのかなと思ったんで
そしたら
int x=y=0;
みたいな記述を見て、メモっとくのを忘れたから
教えてほしい
0541デフォルトの名無しさん
2012/04/28(土) 18:34:26.45初期化する対象が多くて、一文一文書くのがダサイ、ということなら、
たとえば変数が3個以上ある場合、こういうのはできるけど。
int w, x, y, z;
w, x = y = z = 0;
0542デフォルトの名無しさん
2012/04/28(土) 18:35:01.54x=y=0;
これかなと思ったんだが
これだとyが初期化されていないと何故か警告が出る
xが・・・ならわかるが、なぜy?
0543デフォルトの名無しさん
2012/04/28(土) 18:35:08.790544デフォルトの名無しさん
2012/04/28(土) 18:36:26.00警告、こっちだとでないんだけども。
0545デフォルトの名無しさん
2012/04/28(土) 18:40:26.63解散
0546デフォルトの名無しさん
2012/04/28(土) 18:41:53.08それだと、 w,xのところで「;が必要です」とエラーがでる
int w,x,y,z;
w=x=y=z=0;
にすると
intとzのところに波線が出て到達できないコードがありますと出るんだが
0547デフォルトの名無しさん
2012/04/28(土) 18:41:58.50使ってないからだ。
初期化してないからじゃない。
int x, y;
x = y = 0;
Console.WriteLine(x);
Console.WriteLine(y);
0548デフォルトの名無しさん
2012/04/28(土) 18:43:17.62氏ねカス
0549デフォルトの名無しさん
2012/04/28(土) 18:44:00.65自分の環境(VS2010)だと出ないぞ。typoじゃないか?コピー&ペーストしてみて。
int w, x, y, z;
w = x = y = z = 0;
Console.WriteLine(w);
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(z);
0550デフォルトの名無しさん
2012/04/28(土) 18:47:37.05あ、これでいけたわ
さんきゅ
0551デフォルトの名無しさん
2012/04/28(土) 18:47:42.040552デフォルトの名無しさん
2012/04/28(土) 18:48:23.660553デフォルトの名無しさん
2012/04/28(土) 18:48:34.26ここ、IDないから質問者とおちょくりの見分けが付かないんだよ。
0554デフォルトの名無しさん
2012/04/28(土) 18:52:54.47生半可な気持ちで解答者になろうとするなよ
じゃ、これからはこういう姿勢で頼むわ
0555デフォルトの名無しさん
2012/04/28(土) 18:53:20.360556デフォルトの名無しさん
2012/04/28(土) 18:54:42.30IDないところでは、「誰かがそう言ってる」以上に考えちゃダメだよ。
0557デフォルトの名無しさん
2012/04/28(土) 18:55:57.090558デフォルトの名無しさん
2012/04/28(土) 18:58:16.350559デフォルトの名無しさん
2012/04/28(土) 19:00:38.85で、まともに会話しないためにはIDで判断できないから低レベルな質問には全無視するしかない
0560デフォルトの名無しさん
2012/04/28(土) 19:00:44.960561デフォルトの名無しさん
2012/04/28(土) 19:02:24.35か、丁寧に質問の形を成しているものにだけ答えるか。
IDがない以上、憐れな子羊と煽りを見分ける術がないから。
面倒に巻き込まれたくないなら、無視が正解だね。
0562デフォルトの名無しさん
2012/04/28(土) 19:04:06.58お願いします
VS 2010です
0563デフォルトの名無しさん
2012/04/28(土) 19:05:28.980564デフォルトの名無しさん
2012/04/28(土) 19:07:23.850565デフォルトの名無しさん
2012/04/28(土) 19:09:35.230566デフォルトの名無しさん
2012/04/28(土) 19:11:19.790567デフォルトの名無しさん
2012/04/28(土) 19:13:36.260568デフォルトの名無しさん
2012/04/28(土) 19:15:35.10WinFormならCheckedChangedだかで地道にやるしかないね
0569デフォルトの名無しさん
2012/04/28(土) 19:16:00.27OnPropertyChanged
データソース
データバインド
ApplicationSettings
Enum 静的メソッド
ここらへんをキーワードに調べれば、できると思う。
0570デフォルトの名無しさん
2012/04/28(土) 19:17:00.86その地道な部分の書き方がわからないんです
列挙の要素が10あると100通りのif文を書く方法しか思いつかなくて
0571デフォルトの名無しさん
2012/04/28(土) 19:19:01.73データバインドのやり方はわかります
列挙変数の値をチェック状態に反映、またはその逆のやり方がわからないんですよ
0572デフォルトの名無しさん
2012/04/28(土) 19:24:13.46列挙とは、列挙型のことだろうか。
だとしたら、こういうのはどうだ。
MainForm.cs
http://pastebin.com/r5JzbG3c
MainForm.Designer.cs
http://pastebin.com/GAKv4icY
EnumCheckBox.cs
http://pastebin.com/D8LLekFY
EnumCheckBox.Desiginer.cs
http://pastebin.com/sdE81qDU
0573デフォルトの名無しさん
2012/04/28(土) 19:26:12.51ともあれ、荒れる前に一案出せたようで何よりだ。
0574デフォルトの名無しさん
2012/04/28(土) 19:31:14.10Enumの列挙値を編集するコントロール。
データバインドするときは、Valueプロパティ指定しておけば、連動できるはず。
http://pastebin.com/6dvePwbS
まあ、これが良いやり方かどうかは、わからないけど。
何かスマートじゃない気もする(・・
0575デフォルトの名無しさん
2012/04/28(土) 19:32:51.560576572
2012/04/28(土) 19:56:56.25でも、やっぱり>>574の方がクールだな。
EnumCheckBox.cs
http://pastebin.com/VESiEDUq
MainForm.cs
http://pastebin.com/r5JzbG3c
MainForm.Designer.cs
http://pastebin.com/GAKv4icY
0577デフォルトの名無しさん
2012/04/28(土) 20:34:00.59それにしても仕事早いですね
汎用的で使い回しもできるし
コントロール自作したことなかったんで挑戦してみます
ありがとうございました
ちなみに自分の考えたコードはこれです
http://pastebin.com/mwKAYzah
0578デフォルトの名無しさん
2012/04/28(土) 21:07:23.84http://engawa.2ch.net/test/read.cgi/poverty/1335590644/
亀田製菓は韓国の企業「農心」との共同開発を行い、今秋から発売するという。また、農心の工場で菓子の生産技術や
レシピを提供し、農心の商品として販売するそうだ。
この発表以降、亀田製菓のブログに批判的な意見の書き込みが続出し、炎上状態に。最新の更新内容へのコメントは、
既に4000件を超えている。
(略)
http://www.tanteifile.com/watch/2012/04/28_01/image/01.jpg
http://www.tanteifile.com/watch/2012/04/28_01/image/02.jpg
主力商品「辛ラーメン」に、ネズミやゴキブリ等が混入していたことが報じられている。その結果、イギリスやドイツでは
輸入禁止になった。ウジ虫の混入が発覚した際のニュースの動画も出回っている。そのような企業と提携することに対して、
亀田製菓のモラルの欠如を指摘する声が多い。
http://www.tanteifile.com/watch/2012/04/28_01/image/03.jpg
さらに、アマゾンの同社製品へのレビューも、非難のコメントばかりになっている。「日本中で愛されてきたハッピーターンや
柿ピーのノウハウが盗まれ、『韓国起源』となる日も近いでしょう」、「昔ながらの『日本のおばあちゃん』が描かれた
このパッケージも目がつり上がった『オモニ』に替わる日が来るかも知れないなんて・・・亀田さんマジで勘弁して下さいよ・・・」
といった揶揄のコメントも目立つ。
http://www.tanteifile.com/watch/2012/04/28_01/image/04.jpg
炎上騒動の影響は、競合他社へも及んでいる。三幸製菓のブログには、同社を応援するという書き込みが相次いだ。
すると、ブログの担当者は「弊社では、韓国企業との技術提携は行っておらず、また今後そういった計画もございません。
今後も、お客様からご満足と信頼のいただける製品づくりを目指して取り組んで参ります」とコメントした。
http://www.tanteifile.com/watch/2012/04/28_01/image/05.jpg
亀田製菓に限らず、韓国と提携して菓子を製造している企業は多い。この騒動が、他社に飛び火する可能性も高そうだ。
http://www.tanteifile.com/watch/2012/04/28_01/index.html
0579デフォルトの名無しさん
2012/04/28(土) 21:23:15.540580デフォルトの名無しさん
2012/04/28(土) 21:43:22.82他にも教える人がいると、違う視点も見れたりして、かなり勉強になる。
精進精進。
0581デフォルトの名無しさん
2012/04/28(土) 21:45:39.110582デフォルトの名無しさん
2012/04/28(土) 21:52:47.22>>576みたいなコーディングが簡単にできるようになるには
一体何の知識が足りないの?
文法もひと通り覚えたし、2,30個は小規模アプリ作ったけど
>>576のようなコードが頭にパッと浮かばない
面倒だなと思いながらもわかりやすいからif文を重ねることになる
0583デフォルトの名無しさん
2012/04/28(土) 21:55:54.06>列挙の要素が10あると100通りのif文を書く方法しか思いつかなくて
列挙の要素が10あると2^10通りのif文を書く方法しか思いつかなくて
の間違いじゃね?
0584デフォルトの名無しさん
2012/04/28(土) 21:59:46.49だろ。
0585デフォルトの名無しさん
2012/04/28(土) 22:03:59.12んー、そうだなあ。
if文を減らすため、ていう単独の目的なら、常に「列挙できないか」という視点を持って見ると良いかも。
今回ので言えば、俺ももう一人の人も、Enum.GetValuesとか、Type.GetEnumValuesとか、
列挙体(enum)を列挙(IEnumerableとして取得)して、実現させてるでしょう?
C#の一つの方向性として、IEnumerableの活用ってのはそれなりに熱いし、
Microsoftもある程度注力しているから、そこは大事かな。
全体的なスキルの向上に関しては、目的に従って検索したら、
たとえ目的に合わない様な検索結果でも、とりあえず理解出来ないかトライするってのが良いと思う。
懇切丁寧に教えてくれる人が身近にいないなら、自分で自分にムチを打つしかない。
あとは、MSDNの「クラス一覧」みたいなのを、片っ端から読んでみるのも面白いよ。
どうしても分からない事があったら、こういうところで聞くのもあり。
ただ、最初の内は自分が思っている以上に人に伝わる質問が出来ないもの。
可能なら最初から自分のソースコードを可能な限り広い範囲で晒してみるのが良いと思うよ。
0586デフォルトの名無しさん
2012/04/28(土) 22:06:15.31「質問するのに必要なのはここだけだろう」とソースをごく狭い一部分だけ切り出すんじゃなくて、
関連しそうな部分は「可能な限り」全部晒す、ということなので念為
0587デフォルトの名無しさん
2012/04/28(土) 22:09:48.03毎回、if〜で判定して…とか面倒だ↓
汎用的に使えるようにリフレクションとか使えば、できそうだ。
するとどうだろう、毎回if〜で判定してチェックボックス設置してという作業から
ユーザーコントロールひとつ設置して型を登録するだけとお手軽になる。
2,MSDNなり、インテリセンスなり調べる。気になるクラスのメタデータをF12(定義に移動)で
見てみるだけでも良い。何か使えそうなプロパティなりメソッドがあれば、それがヒント。
0588デフォルトの名無しさん
2012/04/28(土) 22:15:47.39ソース自体は全然悪くないと思うよ。今回みたいに、目的が限られているならこれで十分だと思う。
逆に、自分が晒したみたいなソースコードは、時によっては忌避されるべきこともある。
(何でもかんでもリフレクション、なんでもかんでもforeachすりゃ良いってもんでもない)
最初は素直に、こういう風に組んでみるのは全然良いことだと思う。
「一体どこで何が行われるべきなのか」っていうことを知るためには、if文と単純ループだけで作るのが一番大事な基礎だと思うし。
逆に、そういう段階を踏まないと、「なんだ、こんな便利なものがあるのか」と道具頼りで、いざ道具が無い場面に遭遇した時に何も出来ないただのお馬鹿になってしまう。
そこから脱却したい、という話なので、>>585のようなことを考えなきゃいけないね、ということ。
それに、毎回毎回似たようなコードを書くのも面倒臭い、となれば>>587の言うとおり、後で楽するために今苦しむ、というスタンスで行くことになる。
0589デフォルトの名無しさん
2012/04/28(土) 22:19:52.08今回は、リフレクションと列挙体の知識が足りなかったということで勉強になりました
0590デフォルトの名無しさん
2012/04/28(土) 22:21:44.12そうなあ。MSDNの日本語の難解さは異常。
長い時間はかかるけど、いずれ慣れるよ。
俺もWPFの勉強にMSDNと格闘、七転八倒してるところだから頑張ろうじゃないか。
0591デフォルトの名無しさん
2012/04/28(土) 22:22:17.24■ このスレッドは過去ログ倉庫に格納されています