トップページ⇒tech
1001コメント309KB

C#, C♯, C#相談室 Part71

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/03/24(土) 16:43:24.60
前スレ
C#, 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
0459デフォルトの名無しさん2012/04/26(木) 23:29:22.19
>>456
MVVMだの理解できないっていうのもあるけど、単にコマンドだのビューだのモデルだの
面倒だとも思える。いろんな面から分けて作るべきというのは、わかるけど、場面によるわな。

それと、どうにもWPFは、デザイナーが重いし、Formsに比べると、
プロパティエディタが不親切。Formsのようにプロパティの説明を出して欲しい。
0460デフォルトの名無しさん2012/04/26(木) 23:32:13.45
>>457
GUIなしテストはもうしてるんだけど、
GUI部分を実装するときにいちいち実行して動作確認が鬱陶しいんだよね

右クリックしたときに適切なコンテキストメニューが表示されるかどうかとか
メニューの排他チェックボタンが正しく機能しているかどうかとか
0461デフォルトの名無しさん2012/04/26(木) 23:34:03.47
>>458
バインディングはMVVMでなくても十分便利に活用できるぞ
WPF使うのは高度なGUIの自由度を得るのが目的だろ
MVVMが目的とか本末転倒
0462デフォルトの名無しさん2012/04/26(木) 23:35:32.62
あとはまあ、WinFormsで慣れてきてると、
こうしたい!っていう欲求自体が高度化していて、
WPFに写ったときに同じコトをやろうとすると、
覚えることが多すぎるってのはある
0463デフォルトの名無しさん2012/04/26(木) 23:40:38.48
てか、今の時点で同じ事出来ないし
0464デフォルトの名無しさん2012/04/26(木) 23:40:48.97
>>460
UIオートメーションという仕組みがあるけどWinFormsでも使えるよ
0465デフォルトの名無しさん2012/04/26(木) 23:42:20.78
>>461
だから、ちょっとしたツールにそんなデザインなんていらないんだよ
WPF使うときはそれなりの規模のものを作るとき
そういうときのためにMVVMしやすいように改良しているから
そうでないとき以外使いたくない
0466デフォルトの名無しさん2012/04/26(木) 23:51:13.21
テンプレートを改造するときは元のは弄らないでユーザーのフォルダにコピーしろよw
0467デフォルトの名無しさん2012/04/27(金) 00:03:17.95
>>464
お!それなんか良さそう。ありがとう
0468デフォルトの名無しさん2012/04/27(金) 01:19:27.45
MVVMってきききりんみたい
0469デフォルトの名無しさん2012/04/27(金) 03:53:36.82
バインディングとUIちょっと弄るぐらいで満足してるな。
MVVMフレームワークとかいろいろあってよく分からん。
0470デフォルトの名無しさん2012/04/27(金) 04:00:12.99
本当にMVVMは、有効な手段なのか、疑わしくも感じるよなぁ。
0471デフォルトの名無しさん2012/04/27(金) 04:24:15.24
一人で小規模なの作ってるだけだからV・Mで十分。
チーム開発になると必要になるんだろうなとは思うけど、まぁ俺には過ぎた代物だ。
0472デフォルトの名無しさん2012/04/27(金) 13:48:12.25
質問ですが、レジストリの値を読む場合に32ビットから
64ビットの値(wowではない箇所)を読む場合どうすれば
よいのでしょうか?
0473デフォルトの名無しさん2012/04/27(金) 14:21:04.53
WOWではないってのがよく分からんが、
RegDisableReflectionKey関数でキー単位でリフレクトを停止できる
.NET 4ならRegistryKeyにHandleプロパティがあるからそれ渡せばいいかな
0474デフォルトの名無しさん2012/04/28(土) 04:02:57.36
NUnitの正規表現テストでRegexOptionsが指定できないのですが、パターンの中でRegexOptions.Multilineを指定する方法はないですか?
0475デフォルトの名無しさん2012/04/28(土) 09:29:18.02
>>474
MSDN嫁、RegexOptionsの項に載ってるじゃねーか
0476デフォルトの名無しさん2012/04/28(土) 09:50:30.33
TreeViewのクリックイベント時の選択ノードが以前選択してたものになるのは仕様?
0477デフォルトの名無しさん2012/04/28(土) 10:26:32.51
イベント的には

MouseDown
↓
MouseUp
↓
Click
↓
SelectionChanged

だかんね
0478デフォルトの名無しさん2012/04/28(土) 10:30:22.37
TreeViewならSelectionChangedじゃなくてBeforeSelectか
0479デフォルトの名無しさん2012/04/28(土) 11:57:22.92
実行時にリフレクションを使用してクラスのプロパティに
動的に属性を付加または、変更する方法を誰か知っていませんか?

例:とあるクラスにFont型を持つプロパティに対して
動的にDesignerSerializationVisibility属性を付加するなど。
0480デフォルトの名無しさん2012/04/28(土) 12:08:14.18
TypeDescriptor使えば対応してるのには対応できる
0481デフォルトの名無しさん2012/04/28(土) 14:38:50.84
http://www.ps4.jp/up/rec21/src/wwwps4jp11803.png
上記画像の仕様を実装したい場合はどうすればいいのか助言お願いします。
今、自分なりに考えているのは、PanelのMouseイベントでFormのMouseイベントハンドラをOverrideすればいいのかもしれないと考えています。
ただ、今回初めてOverrideを使うので、注意すべき点や、この方法はスマートではない場合、アドバイスお願いします。
0482デフォルトの名無しさん2012/04/28(土) 14:51:49.79
PanelでFormを覆うって意味不明だな。
Panelをトップレベルウィンドウにしてるってこと?
何でそんな変なことをする必要があるんだろう。
そんな変なことをしなければ済む問題だと思うんだけど
0483デフォルトの名無しさん2012/04/28(土) 16:01:30.78
PanelをDock.Fillにしてるって意味ならFormのFormBorderStyle.Sizableなら構わず変更できるとかそういう意味じゃないんだよね
FormのNonClientAreaまで全部Panelで覆っちゃうから操作不能って意味だから困ってるの?

>>482
自分がやらないから他の人もやるなと頭ごなしにまず批判する奴って結構いるよね
自分がやらないやり方では、その延長線上じゃ絶対に何らかの機能を持ったソフトを作ることはできないと
断言できるほどすべてのコードパターンを想像できないから俺には言えないな
0484デフォルトの名無しさん2012/04/28(土) 16:06:19.80
>>483
しかも、頭ごなしに批判する奴に限って真っ当な理由を述べていないからな。
所詮誰かから仕入れた情報を鵜呑みしてるだけだったり、勘違いしてたりだ。

0485デフォルトの名無しさん2012/04/28(土) 16:19:39.26
FormにSendMessageすれば
0486デフォルトの名無しさん2012/04/28(土) 16:42:59.00
>>483
馬鹿っぽい批判だね。
君がやってるのがまさに頭ごなしの批判そのもの。

違うというのならPanelをトップレベルウィンドウにしてFormに覆わせる必然性が
あるケースを一つでも言ってからにしろ。

中学生かよ本当。
0487デフォルトの名無しさん2012/04/28(土) 16:54:08.12
>>486
理解力なさすぎ
お前にはプログラミング無理
0488デフォルトの名無しさん2012/04/28(土) 16:57:12.67
禿ども仲良くしろ
0489デフォルトの名無しさん2012/04/28(土) 16:57:32.37
>>486
だから俺やお前が想像できないから 絶対、必ず、100.00%、未来永劫、存在しないとはいえないって言ってるの
頭ごなしの批判を批判したらそれが頭ごなしの批判ってお前は馬鹿か

揚げ足とってる小学生かよ本当。
0490デフォルトの名無しさん2012/04/28(土) 17:02:01.02
十人十色ということわざがあってだな。
同じ内容でも10人それぞれ違ったやり方がある。
改善したほうが良い点は、指摘してくれれば、その人の知識として蓄えられるかも知れない。
しかし、理由なく自分のやり方じゃないからと、批判したところでなんら無意味でしかない。

すなわち、
貴方が素晴らしいと思うやり方が素晴らしいやり方です。
ただし、他人の同意を得られるとは、限りません・・・。
0491デフォルトの名無しさん2012/04/28(土) 17:13:20.51
>>489
頭ごなしの批判を批判したら頭ごなしだ、などと意味不明なことは言ってない。
「頭ごなしの批判」とやらをお前自身も頭ごなしに批判してるぞと言っている。

ちなみに頭ごなしの意味はこう

----------------------------------------------------
あたま‐ごなし【頭ごなし】
相手の言い分を聞かず、最初からきめつけた態度をとること。「―にしかりつける」
----------------------------------------------------

うだうだ言ってないで根拠を言えよ。
俺は全然そう思わないが、あんたにとっては頭ごなしの批判は良くないんだろ?
>>482のが不当である理由を頭ごなしにではなくちゃんと言ってくれ。
0492デフォルトの名無しさん2012/04/28(土) 17:15:01.52
理屈くせー

友達とかいなそうだなw
0493デフォルトの名無しさん2012/04/28(土) 17:16:44.34
しかし、>>489みたいなガキみたいな論理が通用するなら、
技術の世界に正当な批判なんて存在しえなくなる。

せっかく誰かが悪い作法やアンチパターンを整理しても、それが少なくとも
必用悪であるケースがないことの証明なんて出来ないからな。
0494デフォルトの名無しさん2012/04/28(土) 17:18:31.62
>>491
お前そうやって言い訳しながら嫌なことを避けて惨めな人生を暮らしているんだろ?
0495デフォルトの名無しさん2012/04/28(土) 17:19:37.91
>>494
幼稚なこと言ってないで>>481的スキームが必用になる具体的ケースを挙げてみろ。
0496デフォルトの名無しさん2012/04/28(土) 17:21:48.99
>>482
具体性がない
お前がレスからわかるのは「変」だということだけ
0497デフォルトの名無しさん2012/04/28(土) 17:22:05.84
>>493
尤もらしいことを言っているように見せてるようだけど、
自分の主観で「100%ありえない」なんて抜かす主張はそもそも破綻してるんだよ。

あと、アンチパターンを10000回読み直してきた方が良い。
貴様はアンチパターン提唱の何が素晴らしいかを何一つ理解出来てない。
0498デフォルトの名無しさん2012/04/28(土) 17:22:32.47
うだうだ言ってねーで

さっさと答えろや、どういう作りにしょうがお前らには関係ねーだろーよ
0499デフォルトの名無しさん2012/04/28(土) 17:22:38.19
>>495
する理由は?
0500デフォルトの名無しさん2012/04/28(土) 17:23:05.14
お前のPCで使ってるソフトにかぶせて全部使い物ならなくする嫌がらせソフトなんてどうだ?
0501デフォルトの名無しさん2012/04/28(土) 17:23:08.85
>>499
そう質問する理由は?
0502デフォルトの名無しさん2012/04/28(土) 17:23:43.68
>>498
FormにSendMessageしてみてはどうか。
0503デフォルトの名無しさん2012/04/28(土) 17:25:48.95
>>497
どこに100%ありえないなんて書いてるんだ。
そうする必要性があるのなら質問者が具体的に答えればよい。

君みたいなガキが相手ではそうは行かないが、人間同士のやり取りとはそういうもの
0504デフォルトの名無しさん2012/04/28(土) 17:28:29.09
>>501
バカのオウム返しで答える気がないならこちらも答える必要性はない
0505デフォルトの名無しさん2012/04/28(土) 17:30:40.36
>>493は能力も友達も家族も無い
抗鬱剤飲みながら、引きこもって2ちゃんねるを荒らすのが日課
0506デフォルトの名無しさん2012/04/28(土) 17:31:06.61
>>503
アンチパターンはきちんと読み返して理解して来たのか?
分からなかったらアンチパターン、なんて二度と安易に言うなよな。

そもそもの動機を根本原因として疑うのは全く以て結構だが、
喧嘩吹っかけるような貴様のレスには端から見ていて苛立ちしか感じなかった。

>違うというのなら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.74
ふらっとでいつも荒らしてる奴か?
0510デフォルトの名無しさん2012/04/28(土) 17:39:44.69
>>508
そりゃあもう、楽しんでるからね。煽りには煽りを。
ちょっと強い言葉を使えば、最初は冷静な連中も、いとも容易く激高する。
実に面白い遊びだ。
0511デフォルトの名無しさん2012/04/28(土) 17:39:49.94
ふらっとに居るのは、もっと低脳な奴。
0512デフォルトの名無しさん2012/04/28(土) 17:41:13.49
俺(脳障害)はまだ今日1回しか書き込んでませんよ

650 名前:デフォルトの名無しさん[sage] 投稿日:2012/04/28(土) 09:10:57.63
あんまりどうでもいい話すると荒らすよ

ポタリングに行っていたので
0513デフォルトの名無しさん2012/04/28(土) 17:42:31.39
さっさと答えろや、どういう作りにしょうがお前らには関係ねーだろーよ
0514デフォルトの名無しさん2012/04/28(土) 17:44:42.42
>>513

で、出た案はやってみたの?
0515デフォルトの名無しさん2012/04/28(土) 17:51:16.95
>今、自分なりに考えているのは、PanelのMouseイベントでFormのMouseイベントハンドラをOverrideすればいいのかもしれないと考えています。
>ただ、今回初めてOverrideを使うので、注意すべき点や、この方法はスマートではない場合、アドバイスお願いします。

override ってどういうことなの。FormのイベントをPanelのイベントでoverride?継承について何か勘違いしてないかな。
それともC#予約語のoverrideではなく、何か他のことを指しているのか?

子Panelのイベントで受け取ったポインタを、親Formのイベントにそのまま渡せば良いと思うよ。
0516デフォルトの名無しさん2012/04/28(土) 17:51:44.63
×ポインタ
○カーソル位置
0517デフォルトの名無しさん2012/04/28(土) 17:57:37.66
どうやって別のクラスをoverrideできるんだ?
0518デフォルトの名無しさん2012/04/28(土) 17:59:49.94
まずはどこかのoverride解説してるページのサンプル動かしてみたら?
0519デフォルトの名無しさん2012/04/28(土) 18:00:19.12
>>517
文章から察するに、「override」を何か誤解しているようだから、
あんまり突っ込まないでおこう。
0520デフォルトの名無しさん2012/04/28(土) 18:06:53.52
顔面騎乗位だろ?
05214812012/04/28(土) 18:07:10.79
どうも、Overrideを誤解しているみたいです。もう少し勉強します。

>>483
PanelをDock.Fillです。
更にFormborderstyle.Noneです。

>>502
そこをもう少し詳しくアドバイスお願いします。
0522デフォルトの名無しさん2012/04/28(土) 18:11:25.82
別にWin32API使わなくても自アプリならC#のコードで
メッセージ取得できるでしょ

>>521
OSからのメッセージ(マウスやキーボードの入力情報)を
インターセプトしていじくるってこと
0523デフォルトの名無しさん2012/04/28(土) 18:12:49.00
>>521
質問がミスリード過ぎる。

サイズを変更できないのはFormborderstyle.Noneにしているからで、
Panelと一切関係ないじゃないか。
0524デフォルトの名無しさん2012/04/28(土) 18:13:47.86
>>481
Formの上にコントロールがいくらかぶさろうとも
子コントロールのイベントを親コントロールに通知できるぞ
05255152012/04/28(土) 18:16:24.89
>>521
>PanelをDock.Fillです。
>更にFormborderstyle.Noneです。

やっぱりそれか。作ってたよ。
ちょっとサンプルコード貼ってるからまっとき。
0526デフォルトの名無しさん2012/04/28(土) 18:19:10.31
一応補足しとくけど、サイズ変更に関して枠なしのFormで枠付きと完全に同じ動作を
させようと思うとWindows Messageを捕捉してかなり面倒な処理が必用になったはず。

妥協案としてウィンドウの右下のみでサイズ変更可能にするだけなら、
普通にWindows Formのマウスイベントを捕捉して処理するだけで大した苦労はなくて出来る。
05275152012/04/28(土) 18:20:41.39
>>521

MainForm.cs
http://pastebin.com/x1mYsD5j

MainForm.Designer.cs
http://pastebin.com/RS2VCYNy

これでどうだ?
0528デフォルトの名無しさん2012/04/28(土) 18:21:12.80
変なことするならWPF使えば楽なのに
簡単に枠なしや半透明とかできるのに
0529デフォルトの名無しさん2012/04/28(土) 18:21:28.79
大したことはやってないけど。イベントの伝播もまた最初の内は難しいのかもしれんな。
0530デフォルトの名無しさん2012/04/28(土) 18:23:02.49
てか、デリゲートでいいじゃん
0531デフォルトの名無しさん2012/04/28(土) 18:25:41.87
>>521
FormBorderStyle.Sizableにしたらサイズ変更ができるのは分かってるけど、Formborderstyle.Noneにしたいという要求もあるってことか?
ならば質問でFormborderstyle.Noneにもしたいと言わないと伝わらないだろうな

で解答じゃないけど、もしNoneにした理由がタイトルバーを消したいというだけの理由なら
Sizableにした上でタイトルバーを消すようなRegionを設定するという方法や
Form.Textを空白&Form.ControlBoxをfalseにする方法もある
0532デフォルトの名無しさん2012/04/28(土) 18:26:37.86
人がいるようなので質問させてください
int x=y=0;
のようなことって、C#でどう書くんですか?
0533デフォルトの名無しさん2012/04/28(土) 18:26:39.90
>>530
どうしようか迷ったけど、マウスイベント、って何のこと(Down/Up/...)を言ってるのかわからんかったので、
いきなりラムダ式でDelegate渡して・・・ってやったら、
質問者が自分のやりたいことをやるためにソースを直すのに、また四苦八苦させてしまうかもしれんな、と思ったので。
0534デフォルトの名無しさん2012/04/28(土) 18:27:13.23
>>532
int x = 0, y = 0;
0535デフォルトの名無しさん2012/04/28(土) 18:28:46.47
スマートに書きたいんですが…
0536デフォルトの名無しさん2012/04/28(土) 18:29:06.87
>>532
こいつ昨日ふらっとで同じ質問して相手にバカとかアホとか逆ギレしてたヤツだからスルー推奨
0537デフォルトの名無しさん2012/04/28(土) 18:30:00.57
スマート、の基準を教えてくれ。
int 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
>>536
逆ギレさせるだけの原因があるからかもしれない。
とりあえず答えてみるよ。
0539デフォルトの名無しさん2012/04/28(土) 18:31:50.62
>>534
そのやりかたは知っているけど
int x=y=0;
みたいなやり方をどこかで見たんですよ
これに近い感じで書けないですか?
0540デフォルトの名無しさん2012/04/28(土) 18:33:49.12
>>537
スマートとか言っているのは俺じゃないから

よくメソッド内で使い捨ての変数を宣言するときに
簡単に書けないのかなと思ったんで
そしたら
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.54
int x,y;
x=y=0;
これかなと思ったんだが
これだとyが初期化されていないと何故か警告が出る
xが・・・ならわかるが、なぜy?
0543デフォルトの名無しさん2012/04/28(土) 18:35:08.79
2個でもできるけど、それなら>>534で十分、とは思う。
0544デフォルトの名無しさん2012/04/28(土) 18:36:26.00
>>542
警告、こっちだとでないんだけども。
0545デフォルトの名無しさん2012/04/28(土) 18:40:26.63
warning CS0219: 変数 'y' は割り当てられていますが、その値が使用されていません。



解散
0546デフォルトの名無しさん2012/04/28(土) 18:41:53.08
>>541
それだと、 w,xのところで「;が必要です」とエラーがでる
int w,x,y,z;
w=x=y=z=0;
にすると
intとzのところに波線が出て到達できないコードがありますと出るんだが
0547デフォルトの名無しさん2012/04/28(土) 18:41:58.50
>>545
使ってないからだ。
初期化してないからじゃない。

int x, y;
x = y = 0;
Console.WriteLine(x);
Console.WriteLine(y);
0548デフォルトの名無しさん2012/04/28(土) 18:43:17.62
>>541
氏ねカス
0549デフォルトの名無しさん2012/04/28(土) 18:44:00.65
>>546
自分の環境(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
>>547
あ、これでいけたわ
さんきゅ
0551デフォルトの名無しさん2012/04/28(土) 18:47:42.04
段々質問者の機嫌が悪くなって暴言吐き出してきたぞー
0552デフォルトの名無しさん2012/04/28(土) 18:48:23.66
炸裂する前に終わってよかった
0553デフォルトの名無しさん2012/04/28(土) 18:48:34.26
>>551
ここ、IDないから質問者とおちょくりの見分けが付かないんだよ。
0554デフォルトの名無しさん2012/04/28(土) 18:52:54.47
誠心誠意答えたらこっちもキレなくて済むんだよ
生半可な気持ちで解答者になろうとするなよ
じゃ、これからはこういう姿勢で頼むわ
0555デフォルトの名無しさん2012/04/28(土) 18:53:20.36
やっと答えたかアホども
0556デフォルトの名無しさん2012/04/28(土) 18:54:42.30
と、まあこういう風に質問者だか煽りだか分からんレスが付くわけだ。
IDないところでは、「誰かがそう言ってる」以上に考えちゃダメだよ。
0557デフォルトの名無しさん2012/04/28(土) 18:55:57.09
次はふらっとに行くかw
0558デフォルトの名無しさん2012/04/28(土) 18:58:16.35
チェックボックスとフラグ列挙を連動させる方法教えてください
■ このスレッドは過去ログ倉庫に格納されています