1 名前:デフォルトの名無しさん [2008/08/20(水) 17:15:27 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part29 pc11.2ch.net/test/read.cgi/tech/1216734995/
78 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 15:23:01 ] オブジェクト指向=良いもの オブジェクト指向との合致度が高い言語=いい言語 そんな盲目的な思い込みが罠なんだ
79 名前:デフォルトの名無しさん [2008/08/23(土) 16:19:42 ] 関数ポインタに毛が生えて好き物ってのでいいよ。
80 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 10:33:34 ] オブジェクト指向もパフォーマンス悪いし、匙加減が重要
81 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:34:37 ] C#でMDI フォームアプリを作成しています。 子フォームを最大化すると親フォームのメインメニューにアイコンが 表示されるのですが、これを非表示にするにはどうすればよろしいでしょうか?
82 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:29:13 ] Dictionary<key,value>で、valueを指定してkeyを探すことはできますか?
83 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:43:02 ] .Firstとか.Selectとか あとはforeach
84 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:45:08 ] SelectじゃなくてWhereだった…
85 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:00:28 ] >>83 ありがとうございます。 FirstやSelectは初めて知りました。 しかし、なんでDictionaryにはFindやFindAllが無いんだろう
86 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:09:43 ] Key使わない検索じゃDictionaryの旨みが無いから?
87 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:56:40 ] まあ、検索スピード欲しけりゃ逆引きの方のDictionaryも用意すべきだし。
88 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 22:59:26 ] class 逆引きつきDictionary<TKey, TValue> : IDictionary<TKey, TValue>{ private Dictionary<TKey, TValue> 順引き辞書; private Dictionary<TValue, TKey> 逆引き辞書; void Add(TKey key, TValue value){ 順引き辞書.Add(key, value); 逆引き辞書.Add(value, key); } bool Remove(TKey key){ TValue v = 順引き辞書[key]; 逆引き辞書.Remove(v); return 順引き辞書.Remove(key); } TKey 逆引き(TValue value){ return 逆引き辞書[value]; } … } これはねーか
89 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:05:56 ] valueが重複したらアウトじゃねえかw
90 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:50:12 ] なるへそじゃあ void Add(TKey key, TValue value){ if(逆引き辞書.ContainsKey(value)) throw new valueが重複してますよExeption(); 順引き辞書.Add(key, value); 逆引き辞書.Add(value, key); } っていう風になるのか?
91 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:06:34 ] >>90 それか、逆引きの側は Dictionary<Value, HashSet<Key>>。
92 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:34:59 ] フォーム内にWebBrowserコントロールを追加しているのだが、 その中の任意のポイントにクリックを発生させるにはどうしたらよいのだろう? Cursor.Position = webBrowser1.PointToScreen(new Point(webBrowser1.Location.X + 50, webBrowser1.Location.Y + 50)); のような感じでマウスカーソルを希望するところに持っていくことはできたのだが、 そこにクリックを発生させる方法がわからない。 もしかしたらSendMessageでLEFTDOWN->LEFTUPでクリックを送ればいいのかと思ったけど、 今度はwebBrowser1のいわゆるhWndを取得する方法がわからない。 誰かお助け下さい。
93 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:38:18 ] SendInputが一番楽じゃね
94 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:52:00 ] Flashなどの組み込みオブジェクトではなく単にリンクやボタンなどのHTMLエレメントなどを 操作したいというのであればHTMLDOMつかってInvokeMember(マネージDOMの場合)で Clickメソッドを実行したほうが楽と思われるが。 まあ、わざわざマウスクリックをしたいといってるから組み込みオブジェクトの可能性が高いなw SendMessageではなく、mouse_eventというAPIを使ってみれば?こっちだとhWnd不要だから
95 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:05:03 ] >>93 なるほど、そんな関数があったのね。 homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268 ここを見て、うまくいきました。 ありがとうございます。
96 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:20:30 ] private setの自動プロパティにreadonlyが付けられたらいいのに コンストラクタで初期化して以降変更しないものでも 自動プロパティが便利だからついreadonlyフィールド使わなくなっちゃうんだよね 独り言
97 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:22:28 ] aho
98 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:35:53 ] {0}をコンソールに表示する方法おしえてください
99 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:40:24 ] Console.Write("{0}");
100 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:43:46 ] エスケープの方法はヘルプの「複合書式設定」参照
101 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:54:47 ] public struct MyStruct { public MyStruct(long value) { this.TotalValue = value; } [FieldOffset(0)] public long Total; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } //コンパイルエラー フィールド 'Value1~4' は、コントロールが呼び出し元に返される前に割り当てられている必要があります。 ちゃんと割り当てられてるじゃんね。意外とコンパイラもお馬鹿さんだな。 まーどーでもいいことなんだけど、過疎ってるからネタを投下してみた
102 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:56:14 ] struct MyStruct{ public MyStruct(long value){ this.TotalValue = value; } [FieldOffset(0)] public long TotalValue; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } コードミスったのはご愛敬で
103 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:57:24 ] [StructLayout(LayoutKind.Explicit)] struct MyStruct{ public MyStruct(long value){ this.TotalValue = value; } [FieldOffset(0)] public long TotalValue; [FieldOffset(0)] public short Value1; [FieldOffset(2)] public short Value2; [FieldOffset(4)] public short Value3; [FieldOffset(6)] public short Value4; } 属性付け忘れもご愛敬で。。。 スレ汚しすまない
104 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:02:22 ] いや、コンストラクタで初期値セットせな
105 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:04:39 ] Console.Writeline("{{0}}", 10); で {10} を期待したところ ぶーぶー 言われました >>100 さん、ありがとうございます おかげさまで解決しました >>99 さん、二度とくんな
106 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:06:11 ] 98 :デフォルトの名無しさん [↓] :2008/08/28(木) 16:35:53 {0}をコンソールに表示する方法おしえてください 105 :デフォルトの名無しさん [↓] :2008/08/28(木) 17:04:39 >>99 さん、二度とくんな wwwwwwwwwwwwww
107 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:10:40 ] >>99 はたしかに{0}が出力される。 引数無いとそのまま出るみたいよ。 よって、>>98 の質問の答えにはなってる。
108 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:11:20 ] つーか最初から>>105 の内容で質問すりゃいいのに。
109 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:20:27 ] 100の先もエスケープには限界あるから分けて出力する必要があるかもよって書いてるしな
110 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:28:45 ] 夏だねぇ
111 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:24:32 ] >>110 そのセリフはちょびっと遅いぞ。 言ってみたかったの? 来年またトライしてみよう!
112 名前:デフォルトの名無しさん [2008/08/28(木) 19:24:54 ] 一生懸命勉強して、大きなプログラマになるんだ!
113 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:14:11 ] System.Security.AllowPartiallyTrustedCallersAttribute というエラーが出てJScriptからDLLを呼び出せません… 呼び出せるDLLと呼び出せないDLLがあるのですけれども どこが違うのでしょうか?よろしくお願いします m(_ _)m www.isla-plata.org/wiki/pukiwiki.php?%B3%AB%C8%AF%A5%EA%A5%BD%A1%BC%A5%B9%2FJScript%2F%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%AB%A4%E9.Net%20Framework%A5%AF%A5%E9%A5%B9%A4%F2%CD%F8%CD%D1%A4%B9%A4%EB%A1%CA%A5%CE%A5%A6%A5%CF%A5%A6%CA%D4%A1%CB
114 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:35:51 ] ・セキュリティ上好ましくない為、部分的に信頼されたアセンブリは、厳密な名前付きのアセンブリを呼び出す事ができない。 それだと不便なのでAllowPartiallyTrustedCallersAttributeが付いた物に限り、利用可能になっている。 詳しくはMSDN見て来い
115 名前:デフォルトの名無しさん [2008/08/29(金) 02:06:09 ] public int hoge(ここでエンターキー) ↓ public int hoge { } 上のようにエンターキーでブロックが自動挿入されるように出来ないでしょうか? VBから移行してきたばかりなので入力に手間取ってしまいます。
116 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:09:24 ] 一生VBやってればいいよ こっちくんな
117 名前:115 mailto:sage [2008/08/29(金) 02:11:02 ] 自己解決しました 自動で複数行ブロックが挿入されるようにすると全部複数行になってしまうんですね・・・
118 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:12:01 ] >>116 はじめまして。
119 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:27:04 ] C#はいちいち面倒なことが多くて、やっぱりVBの方がいいですよ。
120 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:28:40 ] ID出してくれええ
121 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:49:25 ] 誰だお前?死ねよ
122 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:59:15 ] 言語に優劣をつける気はないが、VBの If a = b Then だけはどーーしても違和感&不安になる
123 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:00:27 ] 自分の場合、ときどきIf a == b Thenって書いちゃうよ。
124 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 09:15:44 ] VBの場合>>115 みたいな機能が無いとタイプ量が多すぎるからな C#でもifとかforとか使うときにコードスニペットが使えるよ
125 名前:デフォルトの名無しさん [2008/08/29(金) 10:08:03 ] c# から Windows のスタートメニューを開きたいのだけれど、どうやったらできますか? SendKeys.Send("^{ESC}"); としても開けませんでした。
126 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:28:05 ] >>125 [DllImport("user32.dll")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); const uint WM_SYSCOMMAND = 0x112, SC_TASKLIST = 0xf130; private void button1_Click(object sender, EventArgs e) { SendMessage(this.Handle, WM_SYSCOMMAND, new IntPtr(SC_TASKLIST), IntPtr.Zero); }
127 名前:デフォルトの名無しさん [2008/08/29(金) 10:40:16 ] >>126 早々にありがとうございますm(__)m ばっちりです。
128 名前:デフォルトの名無しさん [2008/08/29(金) 18:06:00 ] TcpClient の受信処理で1024Byteずつ受信してメモリストリームに書き出しています。 NetworkStreamのDataAvailableが続きのデータがあるにもかかわらず、 FALSEを返して受信が終了してしまいます。 下記サイトでも同じ問題が記載されています。 www.niseko.or.jp/BlogX2/categoryview.aspx/UPnP 現在do〜while間にSleep(50)を入れると正常に受信できるのですが、 他にも解決策はありませんか? //クライアントとの間の通信につかうストリームを取得 NetworkStream ns = server2.GetStream(); //server2は、TcpClient //クライアントから送られたデータを受信する System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] resBytes = new byte[1024]; int resSize; do { //データの一部を受信する resSize = ns.Read(resBytes, 0, resBytes.Length); //受信したデータを蓄積する ms.Write(resBytes, 0, resSize); Thread.Sleep(50); //ここで50ミリ秒スリープさせると正常に受信できる } while (ns.DataAvailable); string responsStrings = enc.GetString(ms.ToArray());
129 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:12:45 ] Readの返値で判断するのが吉
130 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:15:22 ] リンク先見ずに書いたけどリンク先でもそう結論してんじゃんか 何が悲しいのかさっぱり理解できないが DataAvailableがtrue返すのは多分その時点でネットワークからは読み取り終わってるから Read前なのでバッファには残ってる
131 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:18:51 ] なんか適当なことを書いてしまった DataAvailableがtrueになるのはバッファにデータが溜まってるとき Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返すのは当然
132 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:34:28 ] MSDNを正確に読めよ
133 名前:128 mailto:sage [2008/08/29(金) 18:55:56 ] >>129 Readの返値で判断するのが吉 このReadの返り値は自分で用意したバッファサイズが返るだけのようですが・・ (resBytesのサイズ) >>131 了解です。 100分の5秒遅れただけでfalseでは使えないと言うことですね。 MSDNのサンプルに騙されたか・・ 1byteずつ読んでエンコードしてCONTENT_LENGTHを読んだ方が確実ですね。
134 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:00:56 ] もっぺんReadの解説読んでこい
135 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:02:06 ] Visual C# 2008 Expressを使ってるんですけども デバッグビルドとリリースビルドはどうやって切り替えるんでしょうか
136 名前:デフォルトの名無しさん [2008/08/29(金) 19:13:05 ] MSDNはたまに意味不明なところもあるけど、それは君の技術力が足りなすぎていて理解できないだけ
137 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:17:07 ] >>135 FAQだね Expressをインストールしたらまずやるべきこと ツール→オプション→すべての設定を表示 にチェック プロジェクトおよびソリューション →ビルド構成の詳細を表示・常にソリューションを表示・作成時に新しいプロジェクトを保存 にチェック
138 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:19:54 ] NetworkStream..::.Read メソッド パラメータ buffer 型 : array< System..::.Byte >[]()[] Byte 型の配列。NetworkStream から読み取られたデータを格納するメモリ内の場所です。 offset 型 : System..::.Int32 データの格納を開始する buffer 内の場所。 size 型 : System..::.Int32 NetworkStream から読み取るバイト数。 戻り値 型 : System..::.Int32 NetworkStream から読み取るバイト数。
139 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:20:17 ] APIぐらいちゃんと読めよ
140 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:27:44 ] >>138 まだ続きがあるだろ。 解説 このメソッドは、データをbufferパラメータに読み込み、正常に読み込まれたバイト数を返します。 読み取ることができるデータが存在しない場合、Readメソッドは0を返します。 Read操作は、sizeパラメータで指定されたバイト数に達するまで、使用できるデータをすべて読み取ります。 リモート ホストが接続をシャットダウンし、使用できるデータがすべて受信されると、 Readメソッドはすぐに完了して、0バイトを返します。
141 名前:128 mailto:sage [2008/08/29(金) 19:30:03 ] おわ!理解不足だったか MSDNからコピってきました。 なにがいけないんだろう? // Examples for CanRead, Read, and DataAvailable. // Check to see if this NetworkStream is readable. if(myNetworkStream.CanRead){ byte[] myReadBuffer = new byte[1024]; StringBuilder myCompleteMessage = new StringBuilder(); int numberOfBytesRead = 0; // Incoming message may be larger than the buffer size. do{ numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length); myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead)); } while(myNetworkStream.DataAvailable); // Print out the received message to the console. Console.WriteLine("You received the following message : " + myCompleteMessage); } else { Console.WriteLine("Sorry. You cannot read from this NetworkStream."); }
142 名前:128 mailto:sage [2008/08/29(金) 19:41:00 ] あ、Readの解説ありがとうございます。 resSize = ns.Read(resBytes, 0, resBytes.Length); if (resSize == 0) break; とすればいいわけですね。 これは>>131 さんが言っている、 Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返す に対応できますね。 みなさまありがとうございます。 50にもなって初めてのプログラミング、何もかもが分からないことだらけです。
143 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:51:36 ] 年齢は関係ないだろ
144 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:03:15 ] うむ、年齢は関係ないな。学ぼうとする気持ちが大事。
145 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:09:01 ] 新手の煽りか?
146 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:59:39 ] 50歳からのプログラミング
147 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:11:58 ] 暴れる50代は多いな。 pc11.2ch.net/test/read.cgi/tech/1204552981/738
148 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:25:12 ] >>137 遅レスですがありがとうございました
149 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:13:19 ] VBから移動組だけどはコードがシンプルでいいなあ インテリセンスがもうちょっと使いやすかったらよいんだけど
150 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:52:54 ] VC++からの移行組としてはインテリセンスがちゃんと効くだけで満足です
151 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:31:56 ] JavaやらVBやらやってきたけど、Javaは言語の構造というかなんかすきになれなくて VBは簡単すぎて(;´д`)ってかんじがしてたんだけど、ようやく自分に最適な言語をみつけた。
152 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:37:52 ] そうですか。
153 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:11:32 ] >VBは簡単すぎて の意味がわからん。簡単な方がいいだろ
154 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:31:52 ] そのJavaは言語の構造ってのは何のこと? 謎が多い奴だ・・・
155 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:42:29 ] Javaは周辺技術を追いかけるのに疲れたってのはあるな。
156 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:47:38 ] C#も凄いけどな。それよか、VBは追いかける必要なく得て、いつも言語に組み込んじゃう。だからVBの追いかけなくていいし、面倒ないからいいかなと思うよ。
157 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:22:32 ] VBでなれちゃうと他に乗り換えるのがめんどくさくなってくる。
158 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:37:42 ] それはない
159 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 04:48:31 ] >>156 C#はMSだけ追いかけていればいいけど、JavaはSun以外からもいろいろ 出てくるのがしんどい。
160 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 05:41:00 ] もうDしかない!
161 名前:デフォルトの名無しさん [2008/08/31(日) 07:06:41 ] private void 終了XToolStripMenuItem_Click(object sender, EventArgs e) { } ↑から↓を呼び出すにはどう書けばよいのでしょうか? private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; }
162 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:19:10 ] フォームデザイナでイベントを定義してあれば、勝手に呼ばれるだろ。
163 名前:デフォルトの名無しさん [2008/08/31(日) 07:30:39 ] Linq to xml の事で少し手ほどきしてください XmlSerializer 等を使うと、適当に作ったクラスを一発でシリアライズできますが 同様な感じで、適当に作ったクラスから XElement を作る方法で良い方法はありますでしょうか? またその逆も簡単にできそうであれば教えてください。 現状ではXmlSerializerをStringWriterを経由させているのですが、なんとなくバカっぽいので・・・
164 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:34:47 ] >>162 デザイナで終了XToolStripMenuItem_Clickのプロパティから Clickイベントのドロップダウン一覧にForm1_FormClosingが出てこないので 定義できないのですが、ほかに方法があるでしょうか?
165 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:38:22 ] >>164 デザイナでフォームのイベントを見てみ ここでイベントを割り当てれば、イベントハンドラ定義が追加される。 フォームデザイナでどういうことをすると、どういうコードが追加されるのか 確認してみるといいよ。
166 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:44:32 ] 終了XToolStripMenuItem_Clickからフォームを閉じたいって言うこと? でもe.Cancel=true;って書いてるし何がしたいんだかよくわかんね
167 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:48:10 ] >>163 ぐぐったらこんなのがヒットした。 ttp://www.hanselman.com/blog/MixingXmlSerializersWithXElementsAndLINQToXML.aspx XDocumentのCreateWriterメソッドがポイントみたいね。
168 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:53:43 ] >>165 >>デザイナでフォームのイベントを見てみ これはデザイナのプロパティウィンドウのイベントボタンを押したときの一覧ですよね? >>161 はここからダブルクリックで追加したコードですが 終了XToolStripMenuItem_ClickもForm1_FormClosingもどちらにも お互い出てこないのでイベントハンドラを共有できないのですがどうすれば良いですか?
169 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:59:03 ] >>164 ボタンからは普通にフォームを閉じるなりアプリを終了するなりすればいい。 >>165 ができていれば、フォームが閉じられる前にFormClosingを拾えるはず。 で、イベントがキャンセルされてフォームは閉じられない。 何がしたいんだ?
170 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:11:58 ] >>166 実際にはかなり複雑な分岐処理が書かれているので、ほとんど省略してます。 >>169 VBだと Form1_FormClosing(sender,e) で行けた様な気がしたので気になってDesigner.csでEventHandlerを直接いじっても FormClosedも共有できないみたいだし、C#の仕様ということでしょうか?
171 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:25:58 ] ボタンから閉じないけど同じ処理をしたいのなら別な関数として書いてそれを両方から呼び出したほうがよくね?
172 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:28:48 ] 片方が EventArgs もう片方が FormClosingEventArgs つまりそういうことだ
173 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 08:37:04 ] >>170 Form1_FormClosingにブレークポイントを設定したら、フォームを閉じるときに ちゃんと呼ばれるか? 呼ばれるなら、終了メニューにApplication.Exit();とかthis.close();とか書けば いいっしょ。
174 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:28:13 ] KeyedCollection使うときにGetKeyForItemをオーバーライドするためだけに それぞれ派生クラス作るのってアホらしくない? デリゲートでキーを返す派生クラスを一つだけ作るとか?
175 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 18:44:33 ] それでもいいと思うが ObjectModel 内のクラスの存在理由とかそんなの 勘違いしてないか?
176 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:06:54 ] 日本語対応のフォントのみを取得する方法ってあります? FontFamilyでインストールされてるフォントを全部取得することはできたんですが そこから欧文フォントとかを除く方法がわかりません。
177 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 14:03:41 ] >>170 クラスとキャストの概念が分かってないみたいだねぇ。さすがVB。 Form1_FormClosing(sender,new FormClosingEventArgs()) やりたいのはこれかな?
178 名前:170 mailto:sage [2008/09/01(月) 18:00:03 ] >>171 やっぱりそれが一番勝手が良いですね。 >>172 ようするに、キャストできない型なのでそのままだと呼び出せないということでしょうか。 >>173 なんか一番わかりやすいのでthis.close();を使ってます。 >>177 例えば Form1_FormClosing(sender, new FormClosingEventArgs(CloseReason.None, true)); 見たいにコンストラクタを初期化してやるとエラーにならないんですが 引数なしだとエラーになります。 型が違うイベントを呼び出すときは、毎回コンストラクタを初期化しないと 呼び出せないということでしょうか。 クラスとキャストの概念がわかってるかどうかは自信がありませんがキャストは出来ませんよね?