1 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:11 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part52 pc12.2ch.net/test/read.cgi/tech/1238548552/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
756 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:17:07 ] 普通にPaintできるだろ もしWPFを使うなら,テキストボックス一つ一つをElementHostでホストするようなことはお勧めしない ある程度の大きい範囲で丸ごとWPFにしてElementHostに乗せる
757 名前:デフォルトの名無しさん [2009/08/08(土) 21:28:28 ] >>755 具体的にどうやるの? panel1_iventが出てきたけど…。
758 名前:デフォルトの名無しさん [2009/08/08(土) 21:45:35 ] paintイベントって、formをloadしたときに自動で発生するの?
759 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:23 ] 描画が必要なとき もちろん初めにフォームを表示するときも呼ばれるな
760 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:35 ] くれくれしすぎは
761 名前:デフォルトの名無しさん [2009/08/08(土) 22:14:24 ] もしパネルやテキストボックスがたくさんある場合、 それらの全ての四辺を描画するならば、 重たくなりそう。
762 名前:デフォルトの名無しさん [2009/08/08(土) 22:16:19 ] >>756 ラベルやテキストボックスにbordercolorがないのが困る。
763 名前:デフォルトの名無しさん [2009/08/08(土) 22:17:19 ] >>756 エレメントホストはどれくらい重たいのかな。 今からやってみよ。
764 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:01:35 ] >>741 なんかまともにレスする奴がいないんで見てられないからレスするけど、 そんなのは普通にTextBoxを継承してカスタムコントロール作ってやればいいんだよ。 class TextBoxEx:TextBox { public TextBoxEx() { BorderColor = Color.Red; BorderStyle = BorderStyle.FixedSingle; } [Category("Design"), DefaultValue(typeof(Color), "Red")] public Color BorderColor { get; set; } [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public new BorderStyle BorderStyle { get { return base.BorderStyle; } set { base.BorderStyle = value; } }
765 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:02:47 ] * 764続き * protected override void WndProc(ref Message m) { base.WndProc(ref m); const int WM_PAINT = 0xF; switch (m.Msg) { case WM_PAINT: using (Graphics g = CreateGraphics()) { using (Pen pen = new Pen(BorderColor)) { Rectangle rect = ClientRectangle; rect.Width -= 1; rect.Height -= 1; g.DrawRectangle(pen, rect); } } break; } } }
766 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:09:41 ] >>765 細かいことだけど、WndProcよりもOnPaintのオーバーライドのほうが簡潔では? もちろんsuper.OnPaint呼ぶ手間含んで。
767 名前:デフォルトの名無しさん [2009/08/08(土) 23:09:50 ] >>765 すごい。ありがとうございます。がんばって解読します。 この継承クラスをまた継承したら、命令を抑えてコーディングできますね。 ※ なんで継承したら、bodercolorが出てくるんだろう---。
768 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:10:55 ] >>766 やってみればわかるよ。
769 名前:デフォルトの名無しさん [2009/08/08(土) 23:12:08 ] 例えば50個のテキストボックスを表示させ、 それら全てに色枠線を描いたら、重たいのかな。
770 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:30:00 ] >>768 ごめんなさい。言うとおりだった。 ググったらこんな記述も見つけた。PaintイベントがないならOnPaintもなくて当然か。 msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.paint.aspx > TextBoxBase.Paint イベント > コントロールが再描画されると発生します。このクラスでは、このイベントは使用されません。
771 名前:デフォルトの名無しさん [2009/08/08(土) 23:35:45 ] panelならOnpaintも可能なんだろか。
772 名前:デフォルトの名無しさん [2009/08/09(日) 07:46:49 ] >>765 さんの記事に、 「using (Pen pen = new Pen(BorderColor)) 」 という行がありますが、using句は名前空間の定義のみに使用するわけではないのですか? どういうケースでusing句を指定するケースがあるのでしょうか。
773 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:47:50 ] msdn.microsoft.com/ja-jp/library/yh598w02.aspx MSDNくらい読めよクソタコ
774 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:54:42 ] >>765 using (Graphics g = CreateGraphics()) { using (Pen pen = new Pen(BorderColor)) { } } だとネストが深くなるから using (Graphics g = CreateGraphics()) using (Pen pen = new Pen(BorderColor)) { } の方がいいな。
775 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:56:28 ] }それならこれでいいだろ using (Graphics g = CreateGraphics(), Pen pen = new Pen(BorderColor))
776 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 09:16:17 ] >>775 そうやって並べると見辛くないか? >>774 でいいじゃん
777 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:00:28 ] わざわざ1行にする意味ないな
778 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:26:24 ] 「黄金分割」<副題> ピラミッドから ル・コルビュジェまで 柳亮著 美術出版社 1965年の出版でしかも純粋な美術書。でも、なぜフィボナッチ数の課題を 出されるのかピンとこないプログラマは一度目を通してみるとよい。
779 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:14:40 ] 黄金分割なんてうさんくさいと思うのは俺だけか?
780 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:15:28 ] みんなが黄金といっているのだから黄金なんだろう
781 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:23:24 ] 僕には黄金はまだきついので聖水でいいです
782 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:30:33 ] 名前が胡散臭いだけで特別なものでも不可思議なものでもないけどね。
783 名前:778 mailto:sage [2009/08/09(日) 17:47:10 ] >>779 すみません。これ誤爆でした。
784 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:35:56 ] >>775 コンパイル
785 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:08:36 ] >>765 こうやると枠線だけ書いて、中の文字塗り潰してしまうイメージあったけど これでいけるんだ 勉強になりました
786 名前:デフォルトの名無しさん [2009/08/09(日) 19:13:38 ] このやり方で重たくならないならば、俺もやりたい。 みんな、なんでそんなに詳しいの? 頭脳を分けてほしいよ。
787 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:14:55 ] もっと簡単にできたとおもうが。
788 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:23:35 ] listviewのcustomdrowめんどくさー
789 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:27:50 ] ユーlistviewつくっちゃいなYO!
790 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:33:28 ] customdrow?
791 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:37:31 ] カスタムドローで合ってるぞ オーナードローじゃないぜ
792 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:44:39 ] dr o w?
793 名前:デフォルトの名無しさん [2009/08/09(日) 21:05:54 ] >>784 このロジックはどこに書くの? デザイナーズcs? それとも本体の方?
794 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:39:42 ] いろいろ作ったらさ SS見せてほしいんだけどw
795 名前:デフォルトの名無しさん [2009/08/09(日) 22:21:54 ] >>794 SSってなに?
796 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:24:17 ] Secret Service
797 名前:デフォルトの名無しさん [2009/08/09(日) 22:26:35 ] SQLサーバーを借りてるんですが、直にSQLを書くのと、linqを使うのと、どちらがメリットが高いですか?
798 名前:デフォルトの名無しさん [2009/08/09(日) 22:28:15 ] ボーリングのスコア表をC♯で作りたいんだけど、 膨大な数のテキストボックスを早く負担なく描くには何かいいテクニックはありますか?
799 名前:デフォルトの名無しさん [2009/08/09(日) 22:29:39 ] >>798 なんでボーリングスコア表なんていんねん。
800 名前:デフォルトの名無しさん [2009/08/09(日) 22:31:47 ] >>798 マウスを使って一つずつペタペタ描く。 それしかないだろ。 本を見てもそう書いてた。 間違っていたらごめん。
801 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:40:38 ] 手っ取り早いのはGirdじゃね
802 名前:デフォルトの名無しさん [2009/08/09(日) 22:45:24 ] >>801 ジードって読むの? 初めて聞きました。 詳しく教えてください。 僕もマウスて配置していてくたびれました。
803 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:47:17 ] 1文字間違えるのが流行りなのか? DateGridView
804 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:48:40 ] >>800 その本は何個のテキストボックスをポトペしていた? 10個超えてたらダウト
805 名前:デフォルトの名無しさん [2009/08/09(日) 22:59:55 ] >>804 5つのコマンドボタン。 揃える技は書いてたけど、大量描画についてはコメントなし。
806 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:37:08 ] ストライクとかのアイコンはどうすんの? 結局自前で描画する予感 なら1枚絵で作ってしまえ!とか
807 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:42:53 ] DataGridViewはアイコン置けるよー
808 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:34:20 ] 複数の定数を定義したクラスの中に存在する、 定数に要素に全てアクセスするにはどうすればよいでしょうか? for each 的なコードがあればお教えください。 class TestClass { public const string const_test_1 = "aaa1"; public const string const_test_2 = "aaa2"; public const string const_test_3 = "aaa3"; public const string const_test_4 = "aaa4"; }
809 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:39:29 ] 設計から見直せタコ
810 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:46 ] >>808 案1 人手で全て列挙を行う 案2 コンパイラの忠告を無視して後々のメンテナンスを全て投げきってもいいならリフレクション 後で人手で行った場合の数倍のツケを支払う覚悟があるなら 機械的にリフレクションを通してもいいかも
811 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:54 ] 配列で用意しとけよそんなん
812 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:47:17 ] >>810 案2の方法をお教えください。
813 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:48:25 ] >>812 c# リフレクション フィールド 列挙 で出てきたの↓ dobon.net/vb/dotnet/programing/typegetmembers.html
814 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:50:23 ] >>813 ありがとうございました。
815 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:11:58 ] リフレクションなんか馬鹿に勧めるな馬鹿。
816 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:29:09 ] >>815 馬鹿のお前がいっても説得力がない。
817 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:31:24 ] リフレクション使って全部実行時に行う必要もなくて 一旦リフレクション使って集計して その後手作業でソース起こしてもいいかもね
818 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 07:04:01 ] yieldでよくね?
819 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:10:28 ] >>817 これはよくやる 自動生成しちゃえばいいんだよね
820 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:09:01 ] リフレクションとか難しすぎて頭おかしくなりそう
821 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:26:49 ] >>819 日本語としては「ひちがつ」が正しいがレッドブックの「なながつ」も間違いではない ただ朝鮮人や関西人が良く使う「しちがつ」は明らかに間違い これを使っていると日本人である事を疑われるので気を付けるように
822 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:31:29 ] >>821 なんか最近BOT多くね?
823 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:14 ] 馬鹿ウヨ死ねや
824 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 20:20:39 ] lex とか yacc を思いだした
825 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:07:46 ] リフレクション使うならせめてconstではなくreadonly使おう constとリフレクションは非常に相性が悪い
826 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:13:45 ] >>825 もしかしてCLI時点でconst修飾の名前ってきえちゃうの?
827 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:29:13 ] ビルドした時点でリテラルに置き換わるんじゃなかったか
828 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:31:13 ] んだよ だからリテラルにできない物はconst宣言できない
829 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:38:09 ] 使用した場所はリテラルに置き換わってるが、 型の定義としては残っているのでリフレクションで確認できる。 public static const field System.String const_test_1
830 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:40:05 ] ildasmの表記のほうがいいな。 .field public static literal string const_test_1 = "aaa1"
831 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:57:24 ] しょうがないんだろうけれど、Attributeのコンストラクタ?に普通のオブジェクト生成式とか書けるようになって欲しいお(´・ω・`)
832 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 02:26:21 ] むちゃゆうな まあ気持ちは分かる
833 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 08:30:52 ] Expression<TDelegate>さえ書ければ解決なのに
834 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:27:35 ] TDelegateってなんだ。
835 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 06:20:06 ] Delegateは特殊クラスなのでこういう制約は作れないってことだと思う。 class F<T> where T : System.Delegate
836 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 20:09:48 ] IL 上作れないわけじゃないよ。実際 ECMA335 には 一例として載ってる。 要するにわざと禁止しているものなので理由を考えて みるといいと思うよ
837 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:52:09 ] 1日分のログを日付フォルダごとに分けて保存していて 一定期間経過したフォルダを DirectoryInfo.Delete(true)で削除しているんだが 毎日少しずつ削除時間が延びていくんだが なんか理由知っている人いない? 削除の他にも処理をしているんだが なぜか削除だけ時間がかかる IOの問題なのかな? ちなみに、、、 OS:windows 2003 server R2 Enterprise x64 Edition Service Pack2
838 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:39:00 ] 普通にコマンドで消した時は遅くないの?
839 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:45:04 ] 削除してる間にログを他者が見てるって事はないの? そもそもログの量、大きさは同じくらいなの?
840 名前:デフォルトの名無しさん [2009/08/14(金) 00:23:18 ] 処理内容がわからんから何とも胃炎。 毎日一定時間に処理をしてるんじゃないのか。 削除終了時に終了後から一定時間をセットするなら 削除処理にかかる時間分ずれていくだろ。
841 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 00:45:25 ] すいません vista + C# express edition + excel2007です 参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると microsoft excel5.0 ?????????? と出てるんですけど・・・ これって一体・・・・2007以前のexcel入れれば治るのでしょうか? とても不安です・・・ 壊れてるのかなC#・・・(涙
842 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:03:58 ] >>837 最初は断片化かな?とか思ったけど、メモリリークな気もする。 C#はジェネリクスとnewで管理されているけど解放されないメモリが 簡単にできちゃうから、仮想メモリにガリガリアクセスして時間が かかってしまう可能性も否めない。 Process Explorerあたりで確認して、GCのジェネレーション2が 異常にでかいサイズなら解放漏れ(ジェネリクスのClearやDisposeのし忘れ)を 確認してみたらどうだろう。
843 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:06:10 ] >>842 気になる これってアンマネージドで管理されているメモリの話? それともマネージドだが古すぎてpermanent(永久?)領域に直ぐに移されちゃう話? それとも両方混ざった話?
844 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:13:25 ] マネージドでしょ
845 名前:842 mailto:sage [2009/08/14(金) 02:35:11 ] マネージドの話。 ちょっと怖い書き方をしてしまったけど、要は使わないクラスがどっかで 参照されてるので消されずにメモリが圧迫されてるかも、という事です。 ソートとかで一時領域として使ってたDictionaryに、そのまま参照が残っちゃってて、みたいな。 開発中、デバッガ終了後なかなか処理が戻ってこない時はこの現象が起きてるか 疑ってみたほうがいいかも。と、経験者よりorz
846 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 05:20:44 ] DirectoryInfoのインスタンスは使いまわしてるか、毎回newしてるか。 Directory.Delete(String, Boolean)を使ったらどうか。
847 名前:841 [2009/08/14(金) 08:32:26 ] 初心板にまわります
848 名前:837 mailto:sage [2009/08/14(金) 11:20:52 ] みなさん、ありがとうございます。 >>838 ディレクトリのサイズが32MBぐらいで 普通に"rmdir"コマンドで削除すると1分ぐらいです。 >>839 削除しているのは、数日経過したディレクトリなので 他の人は見てないです。 >>840 日付ごとにディレクトリを作成して その配下に時間ごとのサブディレクトリを 作成してプロセスごとのログを出力しています。 "日付ディレクトリ"の日付を見て 数日経過していたら削除するという 処理を行っています。 >>842 自分も最初はメモリリークを疑っていました。 ページファイルが1日で5MBずつ増えていますが そのせいで削除処理が約30秒も伸びるんでしょうか? 削除処理だけで、他の処理は遅くなっていないのも 気になっています。 >>846 毎回newしています。 解放処理は明示的に行っていないので 参照が残ってしまっているのでしょうか?
849 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:18:00 ] >ディレクトリのサイズが32MBぐらいで >普通に"rmdir"コマンドで削除すると1分ぐらいです。
850 名前:デフォルトの名無しさん [2009/08/14(金) 12:58:35 ] 削除の処理にかかる時間が延びてるってことか
851 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 13:54:14 ] 32MBで一分ってその時点で遅すぎねーか?
852 名前:837 mailto:sage [2009/08/14(金) 14:04:49 ] >>850 そうです。 削除の時間が日々伸びています。 >>851 ディスク上のサイズは204MBでした。 遅すぎですかね?
853 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:07:13 ] ファイル数くらい書けよ。 エスパーさせんな
854 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:08:40 ] シャドウコピーとかは有効になってる?
855 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:42:25 ] ファイル数がきっと膨大なはず ファイルの数があまりに多いと関連の処理がどんどん重くなる 確かWindowsのファイルテーブルてツリー構造してるの見た目だけで 実際はドライブごとに一つの表があるだけだから ドライブ内のファイル/フォルダの数が多くなる度に ファイル/フォルダ絡みのあらゆる動作が遅くなる 間違ってたらごめん
856 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 15:14:19 ] NTFSだったらB木使ってるからFAT32よりも格段に速いよ