C♯, C#相談室 Part36

952デフォルトの名無しさん:2007/01/16(火) 20:39:29
触るな危険って意味がわからないのかな?
953デフォルトの名無しさん:2007/01/16(火) 21:12:54
>あぁこのフォルダ厄介だぁ

おまえは何を言っているのだ
954デフォルトの名無しさん:2007/01/16(火) 22:04:08
>>944
コレクションとかIEnumerableを継承しているとプロパティは出力されない
XmlSerializeのトピックに例外事項として書かれているはず。
955デフォルトの名無しさん:2007/01/16(火) 22:09:32
API使ってて、結果の集合を返す関数が提供されているとき
配列で返すなら、List<T>で返して欲しいな。とか思うことありません?
自分でAPI定義してても、IEnumerable<T>で返すか、IList<T>, T[], ICollection,List<T>
どれで返すのか迷ったりしてましたがList<T>で返すと特に嫌がられることってありますかね?
(相手は.Net2.0以降を仮定してもよいとして)
956デフォルトの名無しさん:2007/01/16(火) 22:38:02
順序さえ分かればいいのであればIEnumerable<T>、序数が重要であればIList<T>で返して欲しい。

クラスで返す必要はないだろ。
957デフォルトの名無しさん:2007/01/16(火) 22:40:31
クラス内部でListじゃなくて自作のIList実装を使いたくなるかもしれないし
958デフォルトの名無しさん:2007/01/16(火) 22:47:24
>>956
List<T>ならList<T>で返して欲しいけどなあ。
IEnumerable<T>で返されたらIList<T>やその他のインターフェースのメソッドが一切使えなくなるわけだし。
でも>>957の言うことももっともかも。
959デフォルトの名無しさん:2007/01/16(火) 23:16:31
>>944
シリアライズについて詳しくないけど
プロパティって、外部に見せるためのラッパーみたいなものでしょ(表現おかしい?)
で、内部的に保持するidがきちんとxmlとして出力されてるなら
プロパティも仮想的に保持されるし、なにも問題ないんじゃないの?
960デフォルトの名無しさん:2007/01/16(火) 23:26:29
>>959
お前は何を言っとるんだ
961デフォルトの名無しさん:2007/01/16(火) 23:27:23
次スレの季節。
無駄なことで消費が早かった。
962デフォルトの名無しさん:2007/01/16(火) 23:40:19
>>959
>(表現おかしい?)
なぁ・・・表現だけなのか?
963デフォルトの名無しさん:2007/01/16(火) 23:44:03
>>959
>プロパティって、外部に見せるためのラッパーみたいなものでしょ

フィールドのように使えるが、実際はメソッド。
メソッドをシリアライズするのか? ということ。
964デフォルトの名無しさん:2007/01/16(火) 23:57:57
XMLシリアライズについtで勉強して来い
965デフォルトの名無しさん:2007/01/17(水) 00:02:37
日本語読め・・・XMLは日本語でもねぇな


文字読めるようになってから書け
966デフォルトの名無しさん:2007/01/17(水) 11:08:20
それ以前にシリアライズが何かが分かってない予感とエスパーしてみる
967デフォルトの名無しさん:2007/01/17(水) 13:18:01
誰に言ってんのか分からない…
XMLシリアライズは、いわゆるシリアライズのイメージと違う部分が多い。
プロパティのシリアライズなんてそんな感じ。
968デフォルトの名無しさん:2007/01/17(水) 14:58:26
XMLシリアライズはpublic限定名時点で終わってる
969デフォルトの名無しさん:2007/01/17(水) 21:02:00
public限定はむしろメリット
Setterさえ制御できれば・・・
970デフォルトの名無しさん:2007/01/18(木) 10:21:47
オブジェクトを保存するのにその内部状態にアクセスできないのは致命的でしょ・・・
971デフォルトの名無しさん:2007/01/18(木) 13:44:15
何でXMLシリアライズでそういう話になる?
やりたきゃIXmlSerializablでも実装すれば?
972デフォルトの名無しさん:2007/01/18(木) 14:11:50
( TДT)ゴメンヨー、内部状態にアクセスできないXMLシリアライズにどういう使い道あるのかまったく分からん。
973デフォルトの名無しさん:2007/01/18(木) 15:17:52
内部状態にアクセス出来ないって、何からみての話だよ。
意味通じてねーよ
974デフォルトの名無しさん:2007/01/18(木) 15:24:53
あほか。知り荒いざーから見てに決まってんだろ。
いいから内部状態を再現できないシリアライズに何の意味があるのかとっととかけボケ。
975デフォルトの名無しさん:2007/01/18(木) 15:34:18
じゃあ何をシリアライズしてるわけ?
976デフォルトの名無しさん:2007/01/18(木) 15:36:37
1000 が近いけれど質問です。

Form1、Form2、Form3 と 3 つのフォームを作り、Form1 と Form2 には button1 を
置きます。また、Form3.ShowInTaskbar = false とします。

Form1 の button1_Click() を以下のようにします。

private void button1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    f2.ShowDialog(this);
    f2.Dispose();
    this.Show();
}

Form2 では、Form2_Shown() と button1_Click() を以下のように書きます。

private void Form2_Shown(object sender, EventArgs e)
{
    this.Owner.Hide();
}

private void button1_Click(object sender, EventArgs e)
{
    Form3 f3 = new Form3();
    f3.ShowDialog(this);
    f3.Dispose();
}
977976:2007/01/18(木) 15:37:51
実行すると Form1 が表示され、Form1 のボタンをクリックすると Form1 が非表示に
なって Form2 が出ます。タスクバーには Form2 のアイコンだけが見えています。
次に Form2 のボタンをクリックすると Form2 は見えたままで Form3 がモーダル
ダイアログとして表示されます。タスクバーには Form2 のアイコンだけ。ここまでは
希望どおりの動作です。

さて、ここでタスクバーの他のアイコンをクリックしてから Form2 のアイコンを
クリックすると、Form3 ではなく Form2 がアクティブになってしまいます。この
状態で [Enter] キーを叩くと Form2 のボタンが押され、Form3 がもう 1 枚開いて
しまいます。

タスクバーの Form2 アイコンをクリックしたら Form3 がアクティブになってほしい
ものですが、いいテはないものでしょうか。それとも私がヘンなコーディングを
している? なお、Form1 を非表示にしなくても同じ動作をするようです。

助けてエロい人。
978デフォルトの名無しさん:2007/01/18(木) 15:50:00
だからXMLシリアライズはそういう目的のものじゃない、
かつどうしてもやりたかったらインターフェイス実装しろってんだろーがよ
全部無視して意味ねー意味ねーうざいんだよ
979デフォルトの名無しさん:2007/01/18(木) 15:59:15
>>976
private void Form3_Load(object sender, EventArgs e)
{
this.Owner.Activated += new EventHandler(Owner_Activated);
}
private void Owner_Activated(object sender, EventArgs e)
{
this.Focus();
}
Form3にかけ
980976:2007/01/18(木) 16:15:32
>>979
うまくいきました。他フォームのイベントハンドラを自フォームに記述するという
発想は出て来ませんでした。

これで心置きなく納品できます。どうもありがとうございました。
981デフォルトの名無しさん:2007/01/18(木) 16:22:41
>>978 だからどういうときに使うのか質問されてんだろが。会話読めボケ。
982デフォルトの名無しさん:2007/01/18(木) 17:15:08
Webサービスのデータとか
読める形での設定情報の保存とか
パブリックなフィールドやプロパティを
シリアライズ・デシリアライズする場面ならなんでも。

状態を完全再現したけりゃバイナリシリアライズすりゃいい
XMLシリアライズはそういう目的じゃないってだけだろ
983デフォルトの名無しさん:2007/01/18(木) 17:18:16
>>981
いつそんな質問があったんだよ。
お前が一人でとにかく使えんてわめいてるだけ。
984デフォルトの名無しさん:2007/01/18(木) 17:21:11
>>982-983
このスレいつから初心者相手にするようになったの?
985デフォルトの名無しさん:2007/01/18(木) 17:53:09
>>983 >>972
( ゚Д゚)<氏ね!能無し。
986デフォルトの名無しさん:2007/01/18(木) 17:59:20
次スレー
C♯, C#相談室 Part37
http://pc10.2ch.net/test/read.cgi/tech/1169110545/
987デフォルトの名無しさん:2007/01/18(木) 18:15:05
独り言だろそれ
988デフォルトの名無しさん:2007/01/18(木) 18:16:14
説明したんだから読めよ馬鹿
989デフォルトの名無しさん:2007/01/18(木) 18:16:55
使い道が分からんなら使うなよ、もう
990デフォルトの名無しさん:2007/01/18(木) 22:06:40
つーか後から書いてるやつ別人だろ。
991デフォルトの名無しさん:2007/01/19(金) 06:57:51
今日地震くるの?
992デフォルトの名無しさん:2007/01/19(金) 10:26:05
世界のどこかであるかもね
993デフォルトの名無しさん:2007/01/19(金) 10:37:21
梅が咲きましたね
994デフォルトの名無しさん:2007/01/19(金) 10:38:25
はやく病院へ行け
995デフォルトの名無しさん:2007/01/19(金) 10:42:24
桜はまだかいな
996813:2007/01/19(金) 11:10:53
>>943
Dictionary<string,IntPtr>
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0, (IntPtr)Marshal.StringToHGlobalAnsi(msg));
Marshal.FreeHGlobal(msg);

こういうことですか?

>>948
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0,msg);
という風に書くことが出来るようになるということでしょうか??
997デフォルトの名無しさん:2007/01/19(金) 12:20:04
梅といえば桃
998デフォルトの名無しさん:2007/01/19(金) 13:08:14
>>991
地震は来るものじゃなくて起こるもの。
「その自信はいったいどこから来るの?」とは用法が若干異なる。
999デフォルトの名無しさん:2007/01/19(金) 15:30:37
ume
1000デフォルトの名無しさん:2007/01/19(金) 15:31:04
デスマーチ梅
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。