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 くらい
720 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:00:45 ] Form2ClosedでForm1Closeして新しいClosedが発生するのがおかしいと言ってるの? 何がおかしいのかよくわからない
721 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:02:44 ] >>719 まあ所持関係にあるForm同士として呼び出してるんだから > _form2.Show(this); Form1閉じる→Form2閉じる っていうのは標準動作として組み込まれてる 逆方向の動きを追加したい場合(Form2閉じる→Form1閉じる)は 標準の動作と競合しないようにしなきゃ不具合が起きて当たり前 FormClosed()の時点ではForm同士の所持関係を破棄していないようなので 無限ループが起きる Disposed()の時点でForm同士の所持関係を破棄しきったので やりたい動作が実現できる
722 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:07:42 ] FormClosedイベントなんだから、「完全にフォームが閉じた後」に発生しないとおかしい と言いたい訳か。 んで_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
723 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:15:06 ] Close()をこうやって呼べばいけるっちゃいける。 this.BeginInvoke((MethodInvoker) (() => Close())); 親フォームが子フォームを閉じるための参照のコレクションを持ってて、 親フォームから登録を抹消するタイミングがFormClosedの後なんだろうな。
724 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:16:44 ] >>722 >_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と いや、そこは必ずしもそうは思わないけど、>>717 のコードの動作が「おかしい」と思う点は、 何度も言うけどOnFormClosedの呼ばれ方が、MSDNに書かれたFormClosedイベントの仕様に 反するように思える点。
725 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:17:10 ] >>723 なんかそれタイミング次第で うまく行ったり例外おきたり 危険な動作しそうな気がする
726 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:18:43 ] 例えば、Form.Show()は何度でも呼べるけど、 その都度Shownイベントが発生したりはしないよね。
727 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:19:47 ] >>724 Formのオーナーシップの関係で Formクラスから子FormのCloseが呼び出されるってことでしょ 何も反してないよ
728 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:23:40 ] >>727 だから、FormClosedイベントの意味、つまり仕様は、「Closeメソッドが呼ばれました」 ではないよね。少なくともMSDNライブラリを詠む限り、そうは読み取れない。
729 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:26:58 ] お前が明示的に呼んだときしかCloseメソッドが呼ばれないと思ってるということか
730 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:37:46 ] >>729 こんなこと言いたくないが、馬鹿はすっこんでてくれよ。 二重の意味で日本語も読めないのかまったく……
731 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:40:59 ] >>730 どう見てもお前の方が馬鹿だが
732 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:41:33 ] むしろMSDライブラリを読み取れないレベルの馬鹿がやめた方がいい お話になりません
733 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:59:09 ] 横やりだが>>728 とかの言ってることは別にそんなおかしくないぞ。 Closeを何度呼ぼうが、実際に閉じたタイミングで一度だけ発生する と期待するのは普通の感覚。 MSDNの説明も普通に読めばそうだと期待する。 一度しか呼ばれない、とは明記されてないし結局仕様なんだろうとは思うけど。
734 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:05:38 ] 1度テストしてみて理解できないようなら方法は無い
735 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:14:25 ] MSDNのクラスのドキュメントって クラス単体の動作を説明してるのが基本であって フレームワークの中でそのクラスがどう扱われてるかは オマケ程度にしか説明されていない っていうことをわかって無いから的外れなこと言い出すんだよね
736 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:28:44 ] >>735 ほほう、「的外れ」とは? 具体的に何がどう「的外れ」だ、と? いや、無理しなくていいよ。 そんな自分の頭で理解していることを表現しているとは思えない、 悪いけど意味不明な文章を書いているようじゃたぶん正面からの回答は無理だと思うから。 しかし、別に初心者が悪いと思わんけど(誰だって最初はそうだし) 知りもしないことに口出しして挙句に相手をいきなり罵倒する奴っていうのは 迷惑以外の何者でもないな本当。 初心者どころか自分でイベントを生成するコードすら書いたことすらないのが、 言っちゃ悪いがミエミエなのに。 まあそれ以前に日本語もまともに読めていないようだけどw 2chでこんなこと言ってみても仕方ないのは分かっているが、あまりに腹が立ったのでね。
737 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 03:20:05 ] ここでクダ巻いててもしょーもねーだろw
738 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 04:57:36 ] 長文書いたら負けですよ
739 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 06:37:29 ] 閉じられる理由位見ろ _form2_FormClosed() の処理が if (e.CloseReason == CloseReason.UserClosing) Close(); じゃないの点が問題なんだよ 何度も Form2 に FormClosed が送られてくるのも あくまでも Form2.FormClosed イベントが終了していない段階で Form1 を改めて閉じようとしているからループしてるに決まってるだろ ユーザ操作以外ではどうせ親から Close が送られてくるから無視でいい
740 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:24:06 ] Form 1 の中で生成した Form2 を破棄しようとして起きるんじゃないの
741 名前:デフォルトの名無しさん [2009/08/08(土) 18:41:56 ] テキストボックスやパネルの境界線の色をグレーや薄いブルーなどにするにはどうすればいいですか? また、 ラベルの上に小さめのテキストボックスを重ね、一つのコントロールにすることはできますか? 調べましたが分かりませんでした。 どなたか教えてください (T_T;)。
742 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:08:28 ] WPFをつかっとけ
743 名前:デフォルトの名無しさん [2009/08/08(土) 19:45:28 ] >>742 WindowsフォームアプリケーションでWPFのコントロールを使えるんだっけ…。
744 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:50:05 ] >>740 ユーザ要求により Form2 に WM_CLOSE が送られ その処理中に Form2 から Form1 に WM_CLOSE が送られ Form1 が閉じる際に子ウィンドウに対して WM_CLOSE が送られ その処理中に Form2 から Form1 に WM_CLOSE が送られ…… WM_CLOSE から発生する一連の処理が終了してない間に 改めて WM_CLOSE を流したらループするだろ
745 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:51:38 ] >>743 Windows Forms の編集時にツールボックス見たら WPF 相互運用機能グループに ElementHost あるでしょ
746 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:56:57 ] >>717 の場合は、別にWin32のウィンドウメッセージの水準で連鎖が起こってるわけじゃなく、 あくまで.NET Frameworkの、いわゆる「イベントの連鎖」が起こってるだけ (しかも仕様というよりバグが原因ぽい)だから、ちょっとその説明は違うと思うけど。
747 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:57:05 ] なんでElementHost なんてわけわからん名前にしたんだ?
748 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:09:08 ] 至って普通の名前だと思うが・・・
749 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:11:01 ] わけわからんって。 Element(UIElement) を Host するから ElementHost。
750 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:14:18 ] WinFormだけでやるなら、 TextBoxやらはボーダーなしにして、 その親としてPanelを用意して、 そのPanelのPaintで枠を描画
751 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:15:37 ] このスレはMS信者に乗っ取られているようだ 嘆かわしい
752 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:31:56 ] まぁC#使ってる奴の99.9%がMS使いだと思うよ(´・ω・`) だれかC#でiPhone開発してる人来ないかな・・・
753 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:34:52 ] というかどこから >>751 が出てきたんだ?
754 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:44:26 ] 何かのキーワードに反応するボットじゃない?
755 名前:デフォルトの名無しさん [2009/08/08(土) 21:12:16 ] >>750 PanelにPaintができるの? 枠線入りの画像をパネルの背景にするってこと?
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 ] リフレクションとか難しすぎて頭おかしくなりそう