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
0514デフォルトの名無しさん
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.240592デフォルトの名無しさん
2012/04/28(土) 22:24:43.51MSDN見て?が頭の上に3つ浮かびそうになったら、他にわかりやすいところないか
ググる。それでもないならMSDNを解読するしかない。
0593デフォルトの名無しさん
2012/04/28(土) 22:26:09.540594デフォルトの名無しさん
2012/04/28(土) 22:27:05.880595デフォルトの名無しさん
2012/04/28(土) 22:28:25.100596デフォルトの名無しさん
2012/04/28(土) 22:29:21.92ハイパーリンクの偉大さはあるけど。
あと、場合によっては英語で直読みした方が捗る。
0597デフォルトの名無しさん
2012/04/28(土) 22:30:37.75それとも「余所でやれ」と投げ出すかで色々変わる。
スレ違いの話題は忌避されるべきだけど。
0598デフォルトの名無しさん
2012/04/28(土) 22:33:21.41横文字が専門用語のことを言っているのか、英会話の一般的なニュアンスなのか
ここがごちゃごちゃになっているから理解に苦しむ
0599デフォルトの名無しさん
2012/04/28(土) 22:35:17.25だからこそ、HTMLにも色んな要素があるわけだ。
専門用語のことを言っている箇所はそれなりの要素に納めて、
ブラウザはそれを斜体表示するとか。
0600デフォルトの名無しさん
2012/04/28(土) 22:35:57.28既述が分かりにくいという批判はちょっと違うと思う。
0601デフォルトの名無しさん
2012/04/28(土) 22:38:48.98文脈依存だから単語で見るとわからない。
自分は、単語AとBが出てきたら頭の中でフュージョンしたり分離したりしてる。
とりあえず、英単語はプリミティブまで分解して考えないとムズいかしいと自分は思っている。
あと、外国はぶらっくじょーくが起源になってたりするからその可能性も考慮しないといけないような気がする。
0602デフォルトの名無しさん
2012/04/28(土) 22:41:18.93コラム的な書きっぷりのページは、確かに向こうの文化とかも押さえておかないと面食らうことがあるな。
重要なこと言ってるかのように見えて、読み終えてみるとたんなる前口上だったりとか。
0603デフォルトの名無しさん
2012/04/28(土) 22:44:16.74台湾にして繁体字な漢文に設定して読めばめっちゃ読み易くなるよ?
0604デフォルトの名無しさん
2012/04/28(土) 22:45:05.98台湾人愛してる
0605デフォルトの名無しさん
2012/04/28(土) 22:47:44.590606デフォルトの名無しさん
2012/04/28(土) 22:51:58.10確かに。リフレクションなんてカタカナにするから駄目なんだよな。
漢は黙って「Reflection」=「反映」だな。
0607デフォルトの名無しさん
2012/04/28(土) 22:53:41.98次のコード例では、各クラスの複数のオブジェクトを作成し、メソッドはそれらを比較するのEqualsの使用方法を示して、二つのパラメータのカスタムAttributeクラスを定義します。
Attribute.Equals メソッド (System)
http://msdn.microsoft.com/ja-jp/library/09ds241w.aspx
0608デフォルトの名無しさん
2012/04/28(土) 23:02:13.43なぜ短く端的に表現できないのか
0609デフォルトの名無しさん
2012/04/28(土) 23:04:12.610610デフォルトの名無しさん
2012/04/28(土) 23:05:18.180611デフォルトの名無しさん
2012/04/28(土) 23:14:38.330612デフォルトの名無しさん
2012/04/28(土) 23:16:29.92あれのせいでMSDN読む気が起きなくなった。
ちょっとコピーしようとしたら、ポップアップが邪魔しやがる。
0613デフォルトの名無しさん
2012/04/28(土) 23:19:04.85公 階層 属性先引数:属性
{
///これは属性の構築です。
公 属性先引数(文字列 目標文章)
{
これ.目標文章 = 目標文章;
}
//目標文章は、属性文章のための記憶装置です。
保護 文字列 目標文章;
//基本が生成するものに文章を追加するには、文字列に変換()を上書きします。
公 上書き 文字列 文字列に変換()
{
戻り値 基本.文字列に変換()+":"+目標文章;
}
}
■ このスレッドは過去ログ倉庫に格納されています