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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:44:27 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part23
pc11.2ch.net/test/read.cgi/tech/1200033660/

751 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:21:15 ]
プレフィックスが教えてくれるのは変数の型だけだぜ!!

って誰かが言ってたな。

752 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:29:43 ]
前に見た糞プロジェクトで、フィールドに普通に名前つけて
プロパティ名が全部p_なんちゃらとかなってて思わずワロタよ

753 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:30:03 ]
.NET Frameworkのクラスライブラリのソースコードのメンバ変数はプリフィックスだらけ

754 名前:デフォルトの名無しさん [2008/02/18(月) 23:55:21 ]
>>753
privateなフィールドなら好きにすればいいが、public メンバにやったら殺す

755 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:04:58 ]
>>751
元々のハンガリアンは変数の型をプレフィックスにするんじゃないぜ!!
って、Joelが言っている。
local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

756 名前:デフォルトの名無しさん [2008/02/19(火) 00:16:12 ]
>>744

publicなフィールドってやっぱだめ?
set getでフィールド渡すだけだと、いちいちプロパティの宣言するのが面倒くさくて
ついついやっちまうんだけど。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:19:24 ]
C#3.0の自動プロパティで駆逐されると信じたい
public int MyProperty { get; set } これだけ

758 名前:デフォルトの名無しさん [2008/02/19(火) 00:20:31 ]
重い処理を行うプログラムがあり、BackgroundWorkerを使ってるんですが、
画面への出力にはDoWorkからフォーム操作を行おうとすると「あるスレッドで作成された
コントロールに対して、別のスレッドのコントロールを親にすることはできません。」と出ます。

それは分かるんですが、フォームへの描画自体に時間がかかる場合、その処理自体を
バックグラウンドで行うにはどうやれば良いのでしょうか。

759 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:21:22 ]
バッファに書き込んどけ



760 名前:758 [2008/02/19(火) 00:43:11 ]
説明が抜けてましたが、実際は子ウィンドウから処理を実行し、親ウィンドウに
複数のウィンドウ(タブ)を追加するといった処理をしたいです。(タブを追加する処理が重い)
バッファに書き込む方法はSetStyle()だと思うんですが、どうも親ウィンドウのフォームでは
SetStyle()が指定できないようでした。。

761 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:55:36 ]
Bitmapに描いとくってことだろ

762 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:38:40 ]
プレフィックスつけてるひと、けっこういるのね
型名とかコントール名とか、どうやって省略したらいいか困るときがある

int int_x=0;
string str_name = "taro";
textbox tbx_input = new textbox();

みたいな感じで頭に三文字略称をつけろとかいう
つまんないローカルルールが社内で流行ってて
しかも人によって略称が違うときがあって逆に混乱するという
ちゃんと取り決めしてないのにプレフィックスつけろって…
プレフィックス一覧とかあると助かるんだけど、いいのが ない


763 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:54:45 ]
ないと思うけどlong int_x = 0;

764 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:16 ]
var int_x = 0;

765 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:55:18 ]
コントロールはわからないでもないけど
その他の型名を付けることに関しては全く無意味だと思う

766 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:23:59 ]
VS2005でSocket通信を行っているのですが、LANケーブルを抜かれた等の経路切断の検出方法に困っています。
調べたところ、TCP KeepAliveを使えば出来そうな気配なのですが、C#用の資料が全然見つかりません。

資料もしくはサンプルのポインタを教えてください。

私が調べたかぎりでは
ttp://vsug.jp/tabid/63/forumid/45/threadid/8051/scope/posts/Default.aspx
がかなり近いケースで、ほぼ要求事項は同じです。(違いは私はクライアント側になります)

たしかにこのSetSocketOptionを設定しても、検出はできませんでした。
// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);

レス3番目の方法はどこにどう実装していいものやらわからず、またどうやって検出するのかもわからない状況です。
必要あればサンプルも貼ります。

767 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:32:52 ]
>>766
TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
直ぐ確認できるはず

768 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:45:01 ]
>>757
それをプロパティにするとなんかメリットあるの?
いつもpublicフィールドにしちゃうけど

769 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 08:23:15 ]
>>762
型名っていうかクラスと構造体とenum(とそれぞれのインスタンス)を
区別するためだけ、なんだけどね

要はクラスならcを頭につけるとかそういうやつ



770 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:37:26 ]
描画をバックグラウンドって、
描画からみの処理自体を細切れにしてやるしかないな。


771 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:41:50 ]
>>768
あとで実装変えられる

772 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:51:58 ]
>>771
あーやっぱめんどくさいからpublicフィールドで十分かな(´・ω・`)

773 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 09:53:02 ]
propコードスニペット使えよ

774 名前:デフォルトの名無しさん [2008/02/19(火) 11:14:22 ]
プロパティーを使っておくと、リフレクションを使ったライブラリやコードを組むときに便利だよ
C#3.0から導入される匿名型は自動的にプロパティーとして実装される事もあるし、とりあえず以下の例を見てもらえれば解る。
Button と DataGridView コントロールをフォームに置く。
以下のコードを実行する、C#は日本語でもコードできるのでそのままいけます、DataGridViewのタイトルに注目、プロパティーの名前がそのまま出る。

class 行の定義 { public int 行番号 { get; set; } public string 内容 { get; set; } }
ボタンのイベントに対して
行の定義[] データテーブル = new 行の定義[] {
new 行の定義() { 行番号 = 1 , 内容 = "ABC" } ,
new 行の定義() { 行番号 = 2 , 内容 = "DEF" } ,
new 行の定義() { 行番号 = 3 , 内容 = "GHI" } ,
};
dataGridView1.DataSource = データテーブル;

775 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:16:41 ]
>>774
それぐらいだともはやこれでいい気がするけどな。

dataGridView1.DataSource = new []
{
 new { 行番号 = 1 , 内容 = "ABC" } ,
 new { 行番号 = 2 , 内容 = "DEF" } ,
 new { 行番号 = 3 , 内容 = "GHI" } ,
};

776 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:25:40 ]
2008は、発売されてまだ日が経っていないので、まだ知らない人いるかなと思ってそう書いたんですが・・・
とふと気付くとプロパティーを省略形にしていたorz
C#3.0では、get; set; と書くと、自動的に中身が作られます。

777 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 11:39:29 ]
ああ駄目だ、配列の初期化までC#3.0になっているorz
もう戻れないな……

778 名前:766 mailto:sage [2008/02/19(火) 11:54:56 ]
>>767
御返事ありがとうございます。

> TCPに任せちゃうんじゃなくて,自分でソケットをラップした通信ライブラリを作ってそこでACKみたいなのをやりとりすれば
> 直ぐ確認できるはず
自分でそこまでできるスキルがありませんorz サンプルがあれば頑張って追いかけてみるんですが素で書くのは無理そうです。。。

サーバ側が自分でいじれればアプリ側でチェックかけるのですが、サーバ側は担当外なので変更不可です。。。

779 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:48:55 ]
となるとネットワークインタフェイスと会話する必要がありそうだね
こっちは門外漢なのでヒントだけおいておきますね
support.microsoft.com/kb/239924/ja



780 名前:766 mailto:sage [2008/02/19(火) 13:38:53 ]
>>779
ヒントありがとうございます。レジストリいじるですか。。。ちょっと気が引けますけど試してみます。

781 名前:デフォルトの名無しさん [2008/02/19(火) 15:11:44 ]
>>776

おおお、そうなのか!
2008のpropスニペットで{get;set;}としか入らないから
なんじゃこりゃ…と思っていたところ。

782 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:25:50 ]
VS2005(C#2.0)です。
インスタンスを文字列で生成するには
Activator.CreateInstance(Type.GetType("クラス名"));
で生成するのは判ったんですが、"クラス名"が存在しているかどうか(生成可能かどうか)を
事前に判断するにはどうしたらいいでしょうか?

データを読んでいって、専用の派生クラスがあればそれで、
無ければ汎用の基底クラスで生成しようと思ってるんです。

ご教示よろしくお願いします。

783 名前:782 mailto:sage [2008/02/19(火) 15:37:05 ]
あ、GetTypeしたときにnullかどうか、
もしくはCreateInstanceして例外をキャッチすればいいのか。

784 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:44:07 ]
>>746
よくPGの人は、HogeとかHogehogeとかFooとかって書いてるけど、なんでへんてこりんな単語を使うの?
ホゲ、ホゲホゲ、ホゲ、フーーー!とかってカタカナで書くと、ぬこが喧嘩してるのかと思う

785 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 15:48:04 ]
>>760
最初からタブを用意しておいてHideにしておき、必要が出たらVisibleにするのはどうなの?

786 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 16:27:27 ]
すいません質問です。

列挙型の変数でToString使用しようとすると、『使用しないでください』、といったポップアップの説明が出ます。
代替としてSystem.Enum.Parseを使えと言ってますが、
現在の値の文字列を取得したいので、GetNameのような気がしますがどうでしょうか?

787 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:07:01 ]
すいません、質問です。

複数条件を確認する場合のif文の書き方について教えてください。
こんな感じで書きたいのですが、C#の場合はエラーとなってしまいます。
C#ではどのように書いたらよいのでしょうか。

if((a=="")or(b="")){

}else{

}

いくつか検索をしてみたのですが、かっこのなかの条件が一つの場合の
例しかヒットしませんでしたのでここで質問をしてみました。
どうぞよろしくお願いします。

788 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:08:31 ]
>>787
||

789 名前:デフォルトの名無しさん mailto:age [2008/02/19(火) 17:12:09 ]
>>788
ありがとうございました。



790 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 17:46:22 ]
>>784
ja.wikipedia.org/wiki/Hoge


791 名前:デフォルトの名無しさん [2008/02/19(火) 18:27:11 ]
2008ってVistaから搭載されてるガジェット作れるようになった?

792 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 18:48:46 ]
>>784
メタ変数ってやつだよ

793 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 19:23:06 ]
>>790
日産フーガって・・・メタ構文変数だったのか

794 名前:デフォルトの名無しさん [2008/02/19(火) 21:27:36 ]
質問です。DBにA列とB列があり

A   B
----------
1 日本
1   東京
1   大阪
2   アメリカ
2 ニューヨーク
3   中国
3 北京

のような形で格納されています。

これをGridに表示させる際に

1 日本   東京     大阪
2 アメリカ ニューヨーク
3 中国   北京

といった形で出力したいのですが、どのようにコードを組んだらいいのか
悩んでおります。

何か良い方法などありますでしょうか?

795 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:32:27 ]
while(Aカラムが存在するまで):
Aカラムに該当するレコードを配列に格納
while(配列が存在するまで):
配列からBカラムを抽出
end
end

796 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:36:28 ]
>>794
こんな感じ?
var table = new[]{
 new { A = 1, B = "日本" }, new { A = 1, B = "東京" },
 new { A = 1, B = "大阪" }, new { A = 2, B = "アメリカ" },
 new { A = 2, B = "ニューヨーク" }, new { A = 3, B = "中国" },
 new { A = 3, B = "北京" } };

var q = from x in table group x.B by x.A;

foreach (var x in q)
{
 Console.Write(x.Key);
 foreach (var y in x) Console.Write("\t{0}", y);
 Console.Write("\n");
}

797 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:43:16 ]
データの持ち方を間違ってる。
テーブル構造を見直すか、アプリ側で処理する。

798 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:56:55 ]
テーブル構造を指摘する人って・・・

799 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:05:52 ]
RDBの場合レコードの並びは保証されてないから国名をどうやって判定するのよ
前ブランクのあるなしかい?




800 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:11:11 ]
国コード 国名  地域名
1     日本   東京

普通こんな感じにしないか

801 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:12:44 ]
まあ、それ言い出したら >>800 のテーブルも正規化されてないでしょ。
そこはスルーでいいんじゃないかと。

802 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:23:58 ]
>>800
気持ちはわかるが、国コードと国名が冗長な気がする

803 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:40:35 ]
つか日本なら普通、国コードは81だろ

804 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:43:17 ]
+81

805 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:38:27 ]
42にすれば全て解決

806 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:40:24 ]
むしろカラム一枚で
81<>jp<>tokyo
みたいにすれば最強。
で、レコード一枚でケツに繋げていくの。

807 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 09:59:09 ]
.NET Frameworkのバージョンが異なるアセンブリ間で
StringやImage等のオブジェクトをやりとりするのは問題ないのでしょうか?

808 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:43:16 ]
意味ワカンネ


809 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:45:03 ]
具体的にどういう状態?



810 名前:807 mailto:sage [2008/02/20(水) 15:05:03 ]
// .NET Framework2.0で作ったアプリ
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(他の人が.NET Framework3.5で作ったDLL);
Hoge hoge = (Hoge)asm.CreateInstance(DLLが公開しているクラス名);
string str = hoge.Name;
Image img = hoge.GetImage();

と、違うバージョンで作られたStringやImageを使っても大丈夫なのかなと。

811 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:08:38 ]
そもそも同一プロセスに異なるバージョンのCLRはロードできないんじゃなかったっけ。
リモート使った場合は余計にシラネ。

812 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:14:47 ]
2.0-3.5はCLRが同じバージョンだから問題ないはず。
2.0/3.0にSP1を当てておけばより確実だと思う。

813 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:34:41 ]
>>797-802
分類基準は一番最初の数値じゃないのかな?
昔のコボラーさんたちが良く使うで、国番号でソートしておいて、国番号が変わったところで切り出すという常套手段。
C#でやるなら 796 だね、これなら番号がソートできないデータ型でもいける、データ構造を変えるなら二重テーブル、XMLを取り扱う気分で。

814 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:40:18 ]
C#2.0での質問ですが、
ジェネリックのコレクションにadd()メソッドで加えたデータを、データグリッドに表示させる方法を教えてください


815 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:33:08 ]
>>813
そういうレベルの話じゃなくてRDBの行に順序なんてない(ORDER BY
でも同順位内は不定)ので「初めに返ってくる」とか「一番上」とかは
不定。意味ないから同じ順で返ってくること多いが毎回ランダムで返って
来ても正しい動作。

つーわけで質問のテーブルだと格納する情報が足りないので不可能が
答えになってしまい >>797 みたいな答えしかできないと

816 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:13:08 ]
>>814
追加するデータのメンバーはフィールド?、それともプロパティー?
表示されるのはパブリックなプロパティーのみだよ 774 を参考にしてみて。
それでも解らなかったら詳細をどうぞ。

>>815
回答する側で勝手に必要条件やしてませんか?
……わかんないけど

817 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:25:50 ]
>>810
なんかこわいっすね、一旦シリアライザでシリアライズしてから渡したほうが無難そうな予感がする。
バイナリフォーマッタ辺りでやれば大きくパフォーマンスも落ちないだろうし、自分ならそっち方面を狙いたいですね。
もし使うなら、こいつです
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter

818 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:24:12 ]
>>817
怖いって……
実行エンジンのバージョンとコンパイルされたアセンブリのバージョンと
ごっちゃにするなよ
つーかBinayFormatterこそめちゃくちゃバージョン依存だろう
xmlの方がまし


819 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:42:08 ]
じゃあbyte[]やchar[]に変換したら



820 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:21:14 ]
>>818
おぃおぃ(^^;

821 名前:814 [2008/02/21(木) 01:40:00 ]
>>816
C#2.0で、クラスを
class 行の定義
{
  int _行番号
  string _内容
  public int 行番号
  {
   get{ return _行番号;}
    set{ _行番号 = value;}
  }
  public string 内容
   {
   get{ return _内容;}
   set{ _内容 = value; }
}
とした場合、C#2.0で、行の定義クラスを配列として使う方法が分かりません。
この方法(クラスのインスタンスを配列として使う方法と、その場合の初期化)を教えてください

行の定義[] データテーブル = new 行の定義[]();
としてもエラーが出てしまうし、
行の定義[] データテーブル = new 行の定義();
としてもエラーが出てしまいます



822 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:49:06 ]
>>821
横やりだけど、()がいらない
行の定義[] データテーブル = new 行の定義[];

初期化をいれるなら
行の定義[] データテーブル = new 行の定義[]
{
new 行の定義( 初期化内容 ) ,
new 行の定義( 初期化内容 ) ,
...
};
"new 行の定義"でコンストラクタでメンバを初期化する機能は2.0には無いので、引数付きコンストラクタを作っておく必要がある。

823 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 07:08:39 ]
行の定義[] データテーブル = new 行の定義[要素数];

824 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:34:30 ]
話を通じさせる為にも3.0に移行がお勧めだな、VS2008はなぜかVS2005より軽量と出来が良いので買い替え時としては悪くないし

825 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:24:46 ]
でもお客に.Net3.5Frameworkを入れさせないといけないでしょ。OSも未だにXP止まりだし。
2.0でさえやっと普及した段階なのに、作りやすいからという理由だけで3.5を入れさせるわけにもいかず・・・。

826 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:32:05 ]
見積もり作り直してみたら?
その分時間かかるけどな!!

827 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:38:42 ]
>>825
じゃあしょうがないね。
ちなみにXPでも動く .Net3.5Framework はウインドウズアップデートでどうぞ。
客にやらせてもこの程度なら差し支えないかと、面倒ならインストーラーにぶち込んでもいいと思うけど。
これもClickOnceを使っているなら、意識する必要ないかもね。
インストーラーは開発前に吟味しておくとこういう時にいい結果を生むので手抜きはしないように。

828 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 15:13:05 ]
>>825
C# 3.0/.NET Framework 3.0/3.5を使うかどうかは別として、
VS 2008は.NET Framework 2.0用のアプリケーションも書ける。

829 名前:デフォルトの名無しさん [2008/02/21(木) 16:25:33 ]
Form1の上にForm2を表示しようとしています。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
form2.Show(this);
}
とすれば、一応表示されるのですが
タスクバーにForm2のアイコンが表示されるのです。
アイコン表示しなくするにはどうすればいいのでしょうか?



830 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:27:20 ]
Form のメンバ一覧をじっくり眺めてみるんだ

831 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:30:01 ]
>>830
ShowIconってあるじゃないっすか
ありがとうございます

832 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:08:36 ]
>>821
配列版は出ているので、ジェネリックのコレクション版で System.Collections.Generic.List 版でも作っておきます。
class 行の定義 {
 int f1;
 string f2;
 public int 行番号 { get { return f1; } set { f1 = value; } }
 public string 内容 { get { return f2; } set { f2 = value; } }
 public 行の定義(int a1, string a2) { 行番号 = a1; 内容 = a2; }
}
実行するコード
System.Collections.Generic.List<行の定義> table = new List<行の定義>();
table.Add(new 行の定義(1, "ABC"));
table.Add(new 行の定義(2, "DEF"));
table.Add(new 行の定義(3, "GHI"));
dataGridView1.DataSource = table;
これなら2.0でも大丈夫……だと思う

833 名前:814 mailto:sage [2008/02/21(木) 19:43:48 ]
>>822>>832
ありがとうございます。勉強になります

>>832のコードを試してみたところ、2.0でそのまま動きました。
配列よりジェネリックのコレクションの方が勝手がいいので、すごい参考になります。

834 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:51:19 ]
>>833
という事は、追加削除もしたいと?
ならDataSourceにtableを直接セットせずにBindingSourceでアダプタをかましてからセットすると追加なども可能になるよ、参考までに。

835 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:18:56 ]
基底クラスのコンストラクタを呼び出すときに,派生クラスのコンストラクタの引数をそのまま渡さずに
ちょっと処理をしてその結果を渡したいんだけど,一つの式で書けるなら
メソッド呼び出しも含めて実質何でもできると考えていいの?

836 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:04:07 ]
メソッド呼び出しは出来る
メソッド呼び出せばなんでも出来る

837 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:09:27 ]
画像を分割するのってどうやれば良いんだ?
パズル的なのを作りたいんだが…

838 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:19:45 ]
Bitmap作ってGraphics.DrawImage

839 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:25:29 ]
DrawImageか、dクス



840 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:12:22 ]
ColorをXmlSerializerからデシリアライズしたいです。
とりあえずひな形を作るためにシリアライズしたのですが、<PackedValue>4278848010</PackedValue>
というものが吐かれていました。
RGB+αとPackedValueの相互変換ができれば解決すると思うのですが、
ググってもよく分かりませんでした。
相互変換のやり方を教えていただけると助かります。
よろしくお願いいたします。

841 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:17:33 ]
FromArgbだろどうせ

842 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:46:35 ]
>>841
RGB=10,10,10のColorをデシリアライズして出てきたPackedValueが
4278848010で、
同じColorをToArgbして表示してみると、-16119286だったんですが…

843 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:50:26 ]
つFF0A0A0A = 4278848010

844 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:52:20 ]
各整数型の値域は把握しとくといいぜ

845 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 14:55:07 ]
16進数も分かってないバカがプログラム書くな

846 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:03:54 ]
ここ初心者用。

847 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:11:58 ]
初心者用はC#という意味だろw

848 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:13:20 ]
つか、なんでARGBはint扱いなんだと思う。
取り扱いが面倒くさすぎ。
Color.FromArgb(0xFF0a0a0a)とか書けないから、いちいち
Color.FromArgb(0x0a, 0x0a, 0x0a)って書いてる。

Cの書き方に慣れてないから知らないだけなのかな。
ひょっとしてもっといい書き方あるんですか?

849 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:14:52 ]
unchecked((int)0xXXXXXXXX))
うん余計面倒だな



850 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:17:16 ]
>>848
intの方が楽でええがな
ビット演算子だけで扱えるし

851 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 15:17:48 ]
uintはCLSに準拠しないからとかなんとか

852 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:44:03 ]
>>847
このスレではいじめ禁止

853 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:50:04 ]
>>848
WinAPIがそういう仕様だから、互換の関係しょうがないだろうと思う
最近HDR(輝度レンジの大きいRGB表現)が登場してRGBが浮動小数点表現になってきつつあるので、どこかの段階で作り変える必要はあるかもしれない。

854 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:50:55 ]
静的型チェックがしっかりしていて,なおかつ実務で使える機能がお多くて,さらにとっつきやすくて,その上曲がりなりにもネイティブで実行される
これだけ長所があるのに何を今更

855 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:54:57 ]
>>853
848の不満はAPIとは関係ないよ uintじゃ無いのが面倒ってだけだから
それにAPIとの互換を重視するならABGRじゃないと駄目だし
今更GDI+拡張するとも思えん
WPFならすでに各色floatで表現できる

856 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:34:21 ]
今はxvYCCとか色々あるからなぁ

857 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:19:36 ]
標準はRGBの方がいいよ、その他は特種扱いで
プログラムがややこしくなりすぎリる

858 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:32:56 ]
タブページへの描画について質問です(検索してもうまく答えが見つからないのでキーワードだけでもいいです)

private TabControl tabControl1;
private TabPage tabPage1;
private TabPage tabPage2;
以上のように宣言をし、定義しています。
tabPage1にはリストビューを使ってデータの一覧を表示しており、うまくいっています
(このようにして→this.tabPage1.Controls.Add(this.listView1);)
tabPage2には円グラフを描きたいのですがうまく行きません。

Graphics g = tabPage2.CreateGraphics();
g.DrawLine(new Pen(Color.AliceBlue), 30, 30, 100, 100);
まずは上記のようにして線を引いてみようと思ったのですが失敗してしまいます。
どういった方法があるのでしょうか?

859 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:56:34 ]
クラスライブラリのプロジェクトを作り、プロジェクトのプロパティから
署名→アセンブリの署名にチェック→キーファイルを新規作成(パスワード保護無し)してkeyfile.snkを作成
として署名しました。
このクラスライブラリの公開キートークンを知りたいのですが、IDE上から調べる方法はあるのでしょうか?
VC#2008Expressです。



860 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:05:16 ]
>>858
どこでDrawLineを呼んでるのかと
どのように失敗してるのかがよく分からないんだけど

多分、tabpage2のOnPaint()をoerrideするか、Paintイベントで書くかしてないんじゃないの?

例えば
tabPage2.Paint += new PaintEventHandler(tabPage2_Paint);

void tabPage2_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawArc(Pens.Black, 10, 10, 100, 100, 0, 90);
}

861 名前:デフォルトの名無しさん [2008/02/24(日) 04:12:20 ]
linqとかほとんど誰も使わないような構文を言語に組み込むくせに
何で正規表現リテラルが言語仕様に無いんだよ。

この言語設計者ってアホなの?

862 名前:デフォルトの名無しさん [2008/02/24(日) 05:59:55 ]
Connector/NETの5.0だとパラメータのプレースホルダとしての接頭辞に「?」しか使えなかったけど
5.2にしてみたら「@」も使えるっぽくなっているんですが
一時変数として「@」を使っていたところまでプレースホルダと判定されちゃってエラーに;;
この対処法をご存知の方いませんでしょうか?

863 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:22:28 ]
>>861
俺はバリバリ使ってるが・・・

864 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:34:11 ]
スクリプト言語ではないから、正規表現をライブラリに投げるのは正しいと思う

865 名前:デフォルトの名無しさん [2008/02/24(日) 06:54:19 ]
C#つかうより断然Bccのほうがいいだろ 過去のソースも使えるし ドットNetなしで動くし
あと開発環境が重すぎ

866 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:01:57 ]
BCCがいいのは認める
だけど.NET使ったら戻れないな

867 名前:デフォルトの名無しさん [2008/02/24(日) 07:08:46 ]
C#は、デルファイ言語、ボーランドC++のパクリだろ それにC++言語の方が有名

868 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 07:53:47 ]
有名(笑)

869 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:52:44 ]
>>867
それを作ってた開発者が
C#を開発したんじゃなかったっけ



870 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:09:15 ]
定期的にその話題でてくるなぁ。

Anders Hejlsbergね。
元ボーランド社員のDelphi開発者。
現MS Technical Fellow。C#開発者で、.NET Frameworkの設計にも深く関わってる。

871 名前:デフォルトの名無しさん [2008/02/24(日) 10:06:22 ]
.NET Remotingを使ってメッセージ通知をしあうプログラムを書いているのですが、
サーバーとなっている方の親クラスに通知する方法が思いつきません。

下記のようにやってみたのですが、これだと呼出毎にインスタンスが出来てしまって
イベントの意味がなくなってしまいます・・・

なにか良い方法はないでしょうか?

// server
class MsgServer : MarshalByRefObject
{
public event EventHandler CallRecv = null;
public string Recv(string message)
{
if (CallRecv != null) CallRecv(this, new EventArgs());
}


872 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:34:48 ]
俺の場合は、知らせたいクラスのオブジェクトはひとつしか作らなかったから
staticでインスタンスを持っておいて、それにアクセスした。

873 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:06:06 ]
>>861
stringの拡張メソッドにMatchでもつけてみたらどうだ

874 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:40 ]
LINQで正規表現を組み立てられないかな

875 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:19:02 ]
「デルファイ言語」

876 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:32:24 ]
むしろ正規表現はExpressionTreeに組み込める気がする
今の実装はどうなってるんだろうね

877 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:46:27 ]
>>876
正規表現のコンパイルオプション次第で、LCG使ってIL出力して高速化できた気がする。
あの部分のソースコードも公開されたのかな。後で見てみるか。

878 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:22:54 ]
質問です。

HttpRequestHeaderで既に定義されている環境変数(User-Agentなど)を
HttpWebRequest.Headersに直接指定したいのですが、

---
このヘッダーは、適切なプロパティを使用して変更しなければなりません。
パラメータ名: name
---

このようなエラーが出てしまって出来ない状況です。
WebClientでは可能なのですが、HttpWebRequestのほうが細かいことができる感じなので
どうにかして指定する方法はないものでしょうか?

具体的にはtextBoxにベタ書きしてある複数行のリクエストヘッダを直接指定しようとしています。

どうかご教示お願い致します。

879 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:34:32 ]
諦めれ



880 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:25:15 ]
Web認証してログインするクライアントソフトを作っているのですが、
HttpWebResponseで返されたHTMLに含まれているボタンを押すには
どうすればいいでしょうか?

具体的にはHTMLソース上で
<input type="submit" name="login" value="ログイン" accesskey="s" />
と書かれているボタンオブジェクトです。

よろしくお願いいたします。

881 名前:デフォルトの名無しさん [2008/02/25(月) 01:30:49 ]
>>880
<input type="submit" name="login" value="ログイン" accesskey="s" />
を包んでる<form …>タグはどうなってるの?
そこに書いてあるmethodによって、actionに書いてあるURLへのデータの送り方が変わってくる。

「HTML フォーム cgi」とかで検索するともっと詳しく分かるかもね。

882 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:33:06 ]
>>881
ありがとうございます

<form action="xxxxxxxxx/index.php" method="post" style="margin-bottom:0px;">
と書いてあるのでPostメソッドでしょうか?

883 名前:デフォルトの名無しさん [2008/02/25(月) 01:37:19 ]
@IT:.NET TIPS WebRequest/WebResponseクラスでPOSTメソッドによりデータを送信するには? - C# VB.NET
www.atmarkit.co.jp/fdotnet/dotnettips/318webpost/webpost.html


884 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:23:42 ]
なんでこういう所に出すのにusingすら使わないんかねぇ・・・

885 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:44:19 ]
>>883
それでやってみましたが、もとのログイン画面に戻ってきてしまいますね・・・
念のため、fiddlerでブラウザが送信しているPOSTメッセージをキャッチして
比較してみたのですが、同じものを送ってるんですが・・・・

Windowsアプリのように、Clickイベントを送ることはできないのでしょうか?

886 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 02:55:50 ]
普通にHTTP POSTで送れると思うのだが。

887 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 03:09:27 ]
すみません
送信文字列に「&」が含まれていたようで、
それを個別に%26に変えないといけないようでした
お騒がせしました
ありがとうございました

888 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:27:06 ]
フォームの上に表示される青いバー(最大化ボタンとかあるやつ)を
消すにはどうすればいいでしょうか?

889 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 10:29:51 ]
FormBorderStyle.Noneにするとか
ControlBoxとTextをなくすとか
Regionでクライアント領域だけにするとか








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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