[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 01/29 10:32 / Filesize : 134 KB / Number-of Response : 576
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part30



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));
見たいにコンストラクタを初期化してやるとエラーにならないんですが
引数なしだとエラーになります。
型が違うイベントを呼び出すときは、毎回コンストラクタを初期化しないと
呼び出せないということでしょうか。
クラスとキャストの概念がわかってるかどうかは自信がありませんがキャストは出来ませんよね?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<134KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef