1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:35:10 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part55 (実質56) pc12.2ch.net/test/read.cgi/tech/1260111240/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
654 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:24:42 ] >>644 >wndprocのフック blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx >コモンコントロールがないに等しい WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。
655 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:51:18 ] とりあえず画像ビュアー的なのを作ろうと思うんだけど 皆さんだとWinFormとWPFだとどっちが速く作れます? サムネイル一覧表示 書庫から画像読み込み 各種フィルタ機能 画像の変換 を予定してます
656 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:10:13 ] >>654 >wndprocのフック こりゃありがてえ!
657 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:13:39 ] >>642 いやそう言う話じゃなくて .xapのMIMEタイプを指定してやらんと貼っても認識しない >>653 みたいなことも出来なくはないけど、それじゃあFlashの代わりとしては敷居が高すぎる
658 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:14:24 ] >>657 ああすまん httpヘッダのあれか・・
659 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:30:34 ] xapを直接クリックでも起動できたっけ? 普通はHTMLLからsilverlightControlHostやsilverlight.js経由で 読み込むからMIMEの登録は不要なはず。 video再生くらいならxapなしで書けたりする。 ttp://www7a.biglobe.ne.jp/~fbsoft/test/BinaryStar.html
660 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:34:14 ] あれ・・・yahoo移管後のGyaoってSLのプレーヤーだな・・・ どうやってるんだろ
661 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:04:42 ] >654 できるのか。知らんかった >WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。 コモンコントロールあるのか・・・ そのキットにはコモンダイアログもついてるのか? フォントダイアログを自作する作業はもう嫌だよ・・・ せめてそのくらいつけてくれ>MS
662 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:06:41 ] ファイルダイアログくらいは仕方ないとしても、 コモンダイアログは本質的にWPFの範囲外だから付けたくないんだろ
663 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:34:35 ] フォント選択ダイアログはこの辺参考に自分で作るか、WinFormsの利用するしかないかな。 ov-p.spaces.live.com/blog/cns!39D56F0C7A08D703!253.entry blogs.msdn.com/text/archive/2006/11/01/sample-font-chooser.aspx
664 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:36:51 ] >>661 WPFだとFont列挙してListboxにでも入れてしまえばいいような気がする
665 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:21:52 ] C#に限ったことではないのですが ループする項目に対していろいろな条件によって continue;するプログラムを書いていると ついループが長くなりがちでなんとかしたいのですが コツのようなものはありますでしょうか すぐ思いつくのは ・ループ内からメソッドを呼ぶようにして 結果をboolで返すとか(処理結果を他で使いたい場合に問題) ・例外でループまで戻ってくる (処理コストの面と意味的な面で例外を使うのはどうか) と言った辺りですが思いつくことありましたらご意見を。
666 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:26:02 ] >ついループが長くなりがち なったことないのでわからん どんな処理書いてるのか見せてもらえると一番なんだが・・・ コード晒す場合は>>4 の※コードの量が多い場合・・・のところを使ってね
667 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:34:08 ] >>665 bool返すメソッドをデリゲートに設定すれば 一つのメソッドで複数のメソッドを呼び出すことができる 一つのif文で済む あとはその処理用にデータ構造を設けてコードが短く済むようにする
668 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:47:47 ] よく分からんが、ループ内をごっそり他の関数にするとか大きな処理にまとめるとか?
669 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:56:16 ] 多態使うとか
670 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:02:16 ] ↓な感じでPictureBoxのサイズ変更時にImageのサイズも 変更しようとしてるんですけどImageのサイズが変わりません。 この方法まずいでしょうか。 ※PictureBoxはフォーム全体にアンカーを貼っていてフォームサイズが変わると 連動するようになっています。 Private void pictureBox1_Resize(object sender, EventArgs e) { pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); }
671 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:23:50 ] なにをしたいか知らんがpictureBoxはこんなことができる ideone.com/Cs4gU
672 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:23:58 ] 変更したサイズのImageが実際に欲しいのか、 Pictureboxのサイズに合わせて表示も拡大したいのか良く分からんけど、 後者ならプロパティに設定するだけ。 SizeModeをZoomかStretchImageにすればいける。
673 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:31:27 ] それよりぶち抜きでcontinueとかbreakしたいのは俺だけか 一番内側から最外ループまで一気に戻りたい時とか面倒で仕方ない
674 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:33:28 ] そんなのはケースによるしな どんなコードの状況になてて>>665 なのかわからんし 当たり障りの無い回答しかできないのも事実
675 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:51:11 ] >>672 SizeMode設定で出来ました。 ありがとうございます。 別のGraphicsの画像をPictureBox.Imageに拡縮貼り付けしていて PictureBoxのサイズが変わったら貼り付ける座標も変わるだろうということで PictureBox.ImageのサイズをPictureBoxのサイズに変えたかったんですけど PictureBoxはPictureBox.ImageをStretchBltしてくれるみたいなイメージなんですね。 >>671 なんだか・・・いろいろやってくれるんですね.NETは 今までWin32APIでしかウインドウズプログラミングしたことなかったので 勉強になります・v・
676 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:10:33 ] 次は、縮小画像がガタガタなんですけど…という質問が来るにちがいない。
677 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:17:39 ] >>676 ファミコンの画像を縮小したら変に滑らかになって困ります。RGB接続した時のようなまま縮小したいです
678 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:26:09 ] >>677 Bitmapオブジェクトを直接弄るしかない
679 名前:665 mailto:sage [2010/05/01(土) 01:05:49 ] 意見ありがとうございます。 実物はアレなので話のネタにサンプルコードとしますがこんな感じ IEnumerable<T> e = xx; foreach (var x in e) { bool a = this.A(x); if (a) { continue; } bool b = this.B(x); if (!b) { continue; } string c = ExtLibC.C(a, b) if (c == null) { continue; } DD d = ExtLibD.D(x, a, b, c) if (d == null || d.D == null || d.DD == null) { continue; } // こんな処理が数十行続くとか // もっとネストが深いとか }
680 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 01:54:42 ] 適当な粒度でメソッドに分ければ? この例だと有効なdを取得したいんだろうから、こんな感じかね foreach(var x in e) { var d = D(x); if (d == null || d.D == null || d.DD == null) continue; // 処理 } -- DD D<T>(T x) { if (A(x) || !B(x)) return null; string c = ExtLibC.C(false, true); return (c != null) ? ExtLibD.D(x, false, true, c) : null; }
681 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 03:02:05 ] >>679 まあ分かって聞いてるんだと思うけど、そんなの汎用的な方法論なんてあるわけないよね。 冗長なコードが悪なのは誰も異論がないとしても、 それは全ての処理はコンパクトな記述が可能だってことを意味しないわけで。
682 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 04:10:07 ] ListViewのLargeIconモードでD&D並べ替えがしたいんだけど、スクロールが出来ない DragDropEffects.Scroll指定するだけじゃダメなの?
683 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:40:31 ] DataGridViewってセル結合出来ないのね・・・
684 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 17:55:36 ] >>683 諦めるんだ・・・ サードパーティが売れなくなるだろ?
685 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:22:19 ] できないことはないけど、コードガリガリ書くの面倒だよ
686 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:10:14 ] 面倒なんでhtmlにしてWebBrowser貼付けた 楽すぎるw
687 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:22:41 ] >>686 ブラウザで代替出来る程度のことなら、素直にTableLayoutPanelでも使った方が もっと簡単なんじゃないかと....
688 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 14:48:35 ] >>687 中の文章でセルサイズを自動調節したいんで、 TableLayoutPanelでは難しいです
689 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:17:07 ] if(a == 1 && a == 2 && a == 3) { } こんな感じのコードをもっとスマートに書く方法ってないですかね。 例えば if(a == (1 && 2 && 3))みたいな感じで。 「かつ」ではなく「もしくは」ならswitch文で代用できるんですけど。 よろしくお願いします。
690 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:18:44 ] if(false)
691 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:20:36 ] すみません。間違えました。確かにこれはおかしいですねw if(a != 1 && a != 2 && a != 3) { } こんな感じのです。
692 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:22:36 ] また「スマート = 文字数が少ないこと」と勘違いしている人かな。
693 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:23:27 ] switchとか!(new[] { 1, 2, 3 }.Contains(a))とか
694 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:28:22 ] >>691 用途上 a >= 0 に限定できるなら if (a && a > 3) { }
695 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:43:52 ] >>692 今回例に出したのは数値型でしたが、文字列型だった場合には条件式の組み合わせが非常に多くなってしまって鬱陶しかったんで。 個人的なことですが、if文等の括弧の途中で改行挟むのが嫌いなものの、改行しないでいると横スクロールが面倒になるという始末。 まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。 要はわがままです。 >>693-694 ありがとうございます。配列に対してContainsを使う方法は思いつきませんでした。 文字列型の場合にも有効活用できそうですね。
696 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:58:05 ] >>695 いずれにせよ、値の評価関数(ようはintならintを引数にとってboolを返す関数) をつくるベタなやり方の方がいいと思うけど。 ifの()の中の記述に場当たり的な技巧を凝らすのは時間の無駄だし馬鹿っぽい。
697 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:13:09 ] 実行速度を計測してみたところまぁ当たり前な気もしますが、単純に比較するのとContainsを使う方法では前者のほうが圧倒的に速かったです。 実行速度を気にしなくて言い場合にはContainsは有効ですね。 >>696 上記の理由より、予め比較を終わらせておく手段をとるのが最善のようですね。
698 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:13:41 ] 数が多くなるならリストを予め作っといて>>693 の後者の考え方で判定するのがきれい
699 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:34:51 ] >>695 >>まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。 俺もこうするかな bool b1 = a != 1; bool b2 = a != 2; bool b3 = a != 3; if( b1 && b2 && b3 ) { }
700 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:21:29 ] 俺は状態を管理するクラスを作るかな。
701 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:24:30 ] var b = a != 1; b &= a != 2; b &= a != 3; if (b) { } だろ
702 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:24:47 ] ただ条件文自体は普通に書くのが一番分かり易いし取り回しもいいと思う。
703 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:25:45 ] >>702 まあ状況によりけりだが素直に条件式書く方がスマートだったりするよな
704 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:31:55 ] 拡張メソッドでNotIn作れば良いよ
705 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:34:00 ] 素直に条件式書いた方がコンパイラ的にも最適化しやすいと思うし。
706 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:40:56 ] 業務アプリならifのパフォーマンスなんかどうでも良くて人間が見やすいことが優先されることが圧倒的に多いけどな
707 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:50:31 ] 業務アプリなら他のプログラマが見ることもあるだろうから普通に書いた方がいい。 個人なら好きにすればいいよ。
708 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:57:54 ] >>695 つまらないこだわりはよせ 月にロケットを飛ばすプログラムが一行で書けたところで 何の意味もない
709 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:07:20 ] あれ?2010からはヘルプはドキュメントブラウザじゃなくてウェブブラウザになったの? しかもオンラインのみ? ローカルに設定したんだけど・・・
710 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:13:25 ] あ、失礼w ローカルアドレス参照になってましたorz
711 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:18:03 ] >>708 意味あるだろ
712 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:32:35 ] >>711 どこに?
713 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:36:39 ] 俺ルールだと if ( a != 1 && a != 2 && a != 3 ) { } 条件の追加削除が楽だし、&&なのか||なのかが前に並んで、俺が分かりやすい。 後ろに置くとチェック変数の変数名長でガタついて見間違えやすいから。 横並びなんて誰得。複合条件ならカッコつけてインデント。複雑なら変数方式。 これを部下に押し付けてる。 途中で||とか変な条件入ったら693なんてどーすんの?
714 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:38:20 ] 大昔のパソコン雑誌(確かASCII)にはその手のコンテストがあったな。 一行プログラムコンテストだっけ? オッサンの独り言でした
715 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:40:59 ] >>713 これとか、カンマを文頭に書くのは好きになれないなぁ。 確かに見やすい&わかりやすいけどね。
716 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:52:31 ] >>713 途中で||が入ったとしても、&&で括れるグループ毎にまとめるとかはできるでしょう。 それに様々な条件が入り交ざったモノってそこまで条件式自体は長くないのが多いし、仮に長かった場合には関数なりなんなりでわかりやすく分離すればいいかと。
717 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:57:35 ] >>716 分解したら今度は読み解くのにあっちこっち見に行かなければならない
718 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:02:28 ] 神経質な人はやりたくなるのは分かるけど、 手作業でコードの整形とか時間の無駄なんだよな。
719 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:15:44 ] そんなことよりswitch文で必ずbreak入れなければならない仕様は改悪だと思うんだ
720 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:18:14 ] caseの中身書かなければ並べられるので不便だと感じたことはないな
721 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:28:38 ] >>719 少数意見だろうな。
722 名前:デフォルトの名無しさん [2010/05/02(日) 22:30:54 ] 1.bp.blogspot.com/_GxQVDnAyExw/SsNvlU5GFAI/AAAAAAAAAAU/4ir3g-WMg1E/s1600/meat2.jpg
723 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:33:40 ] フォールスルーの読みづらさは凶悪 フォールスルーが言語でもめったに使われてないからたまに使われてるとほぼ確実に見落とす
724 名前:723 mailto:sage [2010/05/02(日) 22:35:15 ] フォールスルーが許されてる言語でも の間違い
725 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:38:46 ] >>722 交通事故かな
726 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 00:51:47 ] まさかプログラム板でグロ画像見るとは思わなかった。
727 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:27:07 ] 病んでるんだろ ほっとけ
728 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:33:15 ] >>726 まあ休みの深夜だしw
729 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 03:27:15 ] 長期休暇は変な人があちこちに出没するなぁw
730 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 09:47:15 ] >>723 フォールスルーするならコメント書いとけ
731 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:15:11 ] これもヘンな人? ameblo.jp/ryujiohta/entry-10524500598.html
732 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:24:51 ] 削除ガイドライン違反 8. URL表記・リンク 宣伝・罠・実行リンク ・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。
733 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 14:23:53 ] コピペ君も同類だけどな、まで読んだ。
734 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:25:02 ] このプログラムなのですが、どうしてもエラーが消えません。 どこがおかしいのでしょうか? C:\Documents and Settings\tutomu\My Documents\Visual Studio 2008\Projects\gomokuproguram\sironoisi.cs
735 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:30:23 ] >>734 知りません。 答えようがありません。
736 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:31:21 ] キチガイの相手すんな
737 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:32:48 ] 知らんがな。つとむくん。
738 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:58:19 ] うお、うpろだにあげるの忘れてた
739 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:01:27 ] つとむくん 忘れてたってレベルじゃねぇぞ! ところで gomokuproguram は GomokuProgram ではないか?
740 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:04:52 ] もうやめて!つとむくんのライフゼロよ!
741 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:07:32 ] つとむくんは盲点だったわww 確かにwwww
742 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:10:06 ] 山口さんちのツトム君 このごろ少し変よ どうしたのかナ
743 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:12:46 ] 何歳だよお前
744 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:20:32 ] うpろだにつながらなくなってしまった なんで名前知ってるの・・・? いちようウイルスソフトは入れている 2chになんかカキコするんじゃなかった
745 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:24:02 ] 誰だよお前
746 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:26:50 ] 例え私が滅びようが第二、第三のツトムが五目プログラムを作るであろう・・・ グフッ
747 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:34:27 ] >>744 ウイルスソフトなんて入れてるから駄目なんだと思います。 >>746 ワロタww
748 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:39:30 ] ツトム君の人気に嫉妬した
749 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 02:25:23 ] プログラム一通り見たけど、設計がなってない
750 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 02:44:44 ] シロノイシ なんか小説でも書けそうなタイトル
751 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:32:12 ] つとむ君のスレになりそうだな 【五目】C#相談室【白の石】
752 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:50:42 ] こうだろ 【五目】C#相談室(ツトム君専用)【白の石】
753 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 10:07:25 ] OSに頼らずにジェスチャーを実装することって可能かなあ・・・ マウスだとボタンとポインター移動部分が独立してるけど タッチパネルとなるとタッチした瞬間にカーソル移動+ MouseDownとかイベント発生しそうだし・・・
754 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 10:25:11 ] >>753 戦車ゲームが難しいな タッチしたら旋回して即発射 つねに振り向きざま即発射