トップページ⇒tech
1001コメント299KB

C#, C♯, C#相談室 Part42

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/08/26(日) 12:42:25
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part41
http://pc11.2ch.net/test/read.cgi/tech/1184840053/

過去スレは>>2-5あたり。
0052デフォルトの名無しさん2007/08/28(火) 00:28:01
フォーム上のコントロールのEnabledをfalseにするとクリック等のイベントが親コントロールに通知されます。
これを通知させないようにする方法はありますでしょうか?
0053デフォルトの名無しさん2007/08/28(火) 10:54:27
渡されたオブジェクトの型を調べて、その型のListを作りたいんだけど<>の中の書き方が分かりません。
教えてえろいひと!
0054デフォルトの名無しさん2007/08/28(火) 11:01:50
まずはお前の肛門拡張からだ
0055デフォルトの名無しさん2007/08/28(火) 11:02:01
Activator.CreateInstance(typeof(List<>).MakeGenericType(obj.GetType()))
0056デフォルトの名無しさん2007/08/28(火) 11:07:02
何がしたいのか知らんが
Type listT=typeof(List<>);
object listHoge=listT.MakeGenericType(typeof(Hoge));

こんな感じじゃなかった?
0057デフォルトの名無しさん2007/08/28(火) 11:07:33
( TДT)ゴメンヨーCreate忘れてた
0058デフォルトの名無しさん2007/08/28(火) 11:13:15
>>53

実行時にしか型がわからないなら、arraylistでobjectに格納すれば
いいんでないの?わざわざジェネリック使う意味がよくわからないけれど。
0059デフォルトの名無しさん2007/08/28(火) 12:27:06
Listよりarraylistの方がいいのかな?
使い分けが良く分かってないのでとりあえずList使おうかな、と
0060デフォルトの名無しさん2007/08/28(火) 13:58:13
引数の型に合わせるためにどうしても必要とかでなければ>>58でいいよ
Listに統一したかったらList<object>にすれば
0061デフォルトの名無しさん2007/08/28(火) 13:59:25
public List<T> CreateList<T>(params T[] objs)
{
 return new List<T>(objs);
}

こうだろ
0062デフォルトの名無しさん2007/08/28(火) 14:11:04
>>61
0063デフォルトの名無しさん2007/08/28(火) 14:13:04
>>61
object value = (Int32)1;
Type type = value.GetType();
MethodInfo method = typeof(Program).GetMethod("CreateList");
MethodInfo generic = method.MakeGenericMethod(type);
Array paramArray = Array.CreateInstance(type, 1);
object list = generic.Invoke(null, new object[] { paramArray });
0064デフォルトの名無しさん2007/08/28(火) 15:30:47
�dクス
arraylistでちょっとやってみます
0065デフォルトの名無しさん2007/08/28(火) 15:32:12
ArrayListよりList<object>のほうがいろいろ便利さ
0066デフォルトの名無しさん2007/08/28(火) 16:06:59
もうジェネリックなしでは生きられない
ArrayListでいちいちキャストしてた頃があったなんて信じられない
0067デフォルトの名無しさん2007/08/28(火) 18:33:51
>ArrayListでいちいちキャストしてた頃があったなんて信じられない
もっと地獄なのは、要素型ごとに実装された*Collectionクラス。
たいていIListないし、IEnumerable<T>,ICollection<T>なんてもちろんないし、
しかも未だにあちこちで使われてて実にムカツクんだけど。
0068デフォルトの名無しさん2007/08/28(火) 18:48:49
(´・ω・`)<ねーソケット書く人いる?
0069デフォルトの名無しさん2007/08/28(火) 18:52:05
(・∀・)<いないよー
0070デフォルトの名無しさん2007/08/28(火) 18:53:21
ソケット自体は書いたこと無いな
ソケットを使ったプログラムは書いた事あるけど
0071デフォルトの名無しさん2007/08/28(火) 18:53:54
なんかガキ臭い奴が多くて萎えるなあ。。

ガキは宿題でもやってろよ、と言いたいところだが
最近じゃ2chでガキ臭いこと書いてる奴が40面下げたオッサンだったりする
笑えない状況だからなあ。
0072デフォルトの名無しさん2007/08/28(火) 19:10:21
(´・ω・`)<L2から書くのは、やっぱむり?

0073デフォルトの名無しさん2007/08/28(火) 19:18:09
40のおっさんが2chとかひくww
0074デフォルトの名無しさん2007/08/28(火) 19:34:43
すくなくともC#の範囲じゃ無理っぽ
0075デフォルトの名無しさん2007/08/28(火) 19:47:34
(´・ω・`)<やっぱ、#だけじゃだめか。
>>74
(´・ω・`)ノシ<有り難う。
0076デフォルトの名無しさん2007/08/28(火) 21:19:08
無理じゃねーよ
0077デフォルトの名無しさん2007/08/28(火) 22:06:06
文字列中に2バイトコードが含まれている or 含まれていないって
どういう判別が一番楽かな?
やっぱり正規表現?
0078デフォルトの名無しさん2007/08/28(火) 22:09:22
.NET の文字列はすべて2バイトコードですが何か
0079デフォルトの名無しさん2007/08/28(火) 22:09:51
>>78
あ、ごめん。日本語のひらがなや漢字という意味です。
0080デフォルトの名無しさん2007/08/28(火) 22:13:49
full width alphabet や ラテン拡張文字はどうしましょうか
0081デフォルトの名無しさん2007/08/28(火) 22:14:11
正規表現。
0082デフォルトの名無しさん2007/08/28(火) 22:34:46
>77
Shift_JISでのサイズでも取得すればいいんでない?
0083デフォルトの名無しさん2007/08/28(火) 23:43:32
プログラミング初心者ですが、 C# 2005 Express Edtion を導入してみました。
それで、現在MSのサンプルプログラムで学習中なのですが、
以下のプログラムをビルドするとエラーが発生します。

http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/
「エラー1 ジェネリック 型 'System.Collections.Generic.IEnumerator<T>' の使用には、'1' 型の引数が必要です。」

このエラーの意味が分からないのですが、これはどのように改善したら実行できるのでしょうか?
2003年の記事なので、内部の何かが変わっているのでしょうか?


0084デフォルトの名無しさん2007/08/29(水) 00:14:22
using System.Collections;
0085デフォルトの名無しさん2007/08/29(水) 00:22:01
>>67
>もっと地獄なのは、要素型ごとに実装された*Collectionクラス。

C# 3.0だと拡張メソッドのOfType<T>()でIEnumerable<T>に変換できる。
もうちょい待とうぜ。

var sc = new System.Collections.Specialized.StringCollection();
var list = sc.OfType<string>(); // IEnumerable<string>
0086デフォルトの名無しさん2007/08/29(水) 10:36:17
>>84
うまくいきました。
ありがとうございました。
0087デフォルトの名無しさん2007/08/29(水) 16:14:18
エラーが出るファイルの上の方に

using System.Collections.Generic;

って書いてないかな?
それを

using System.Collections;

に変更すれば直るはず。
0088デフォルトの名無しさん2007/08/29(水) 19:51:34
>>83
なんでこんな変なサンプルを学習に使うの
学習者向けと言うより、「こんなことができるんだよ、すごいでしょ」的なものだろこれ
0089デフォルトの名無しさん2007/08/29(水) 20:37:25
インターネットショートカットがコピーできないんだけど、なんか方法無いでしょうか
0090832007/08/29(水) 20:38:42
>>87
両方ともなかったので using System.Collections を追加したら動きました。
ありがとうございました。
ただ、リンクチェックを実行すると別のエラーを吐くので調べてます。

>>88
実はリンクチェックソフトを探していてたどり着いたのです
そしてら、VC#では簡単に組めそうではないですか!
驚きと期待で導入し勉強中な訳です
自分好みのリンクチェックソフトを作れたら最高にうれしいのですが・・・甘くはないようですね
0091デフォルトの名無しさん2007/08/29(水) 21:00:12
>>81
intにキャストして256未満か以上って判断もありだよ
0092デフォルトの名無しさん2007/08/29(水) 21:11:15
その発想はなかったわw
いやもちろん嫌味だが
0093デフォルトの名無しさん2007/08/29(水) 21:16:22
一文字ごとに処理しなくちゃいけないときは、これが一番早いんだが
0094デフォルトの名無しさん2007/08/29(水) 21:34:30
それじゃハングルとかアラビア語とかも捕まえちゃうんじゃん?
0095デフォルトの名無しさん2007/08/29(水) 21:34:39
Ĭは2バイトコードなの?
0096デフォルトの名無しさん2007/08/29(水) 21:43:45
>>94
WEBじゃなきゃハングルやアラビア文字考慮する必要が無いシチュエーションなんていくらでも存在するだろ
要は使い分けなんだよ
0097デフォルトの名無しさん2007/08/29(水) 21:51:43
オレの記憶が確かならばここはC#スレであってC言語スレじゃないと思う
0098デフォルトの名無しさん2007/08/29(水) 22:00:27
たしかにC#スレだが、どうしてC言語スレがどうのという話が出てくるんだ?
0099デフォルトの名無しさん2007/08/30(木) 01:34:37
俺様に理解できない話は別言語
でこのスレが間違われやすいのはCスレ。
よって>>97
0100デフォルトの名無しさん2007/08/30(木) 01:40:32
何なのこいつ
0101デフォルトの名無しさん2007/08/30(木) 02:05:06
日本語==別言語
0102デフォルトの名無しさん2007/08/30(木) 02:07:02
>>101
>>99にとってはtrue
0103デフォルトの名無しさん2007/08/30(木) 08:38:09
ToolStripMenuで動的に追加された項目のクリックで処理をしたいのですが、
第一階層目のContextMenuStripではうまくクリックイベントの処理を行えたのですが、
第二階層目のToolStripMenuItemsでDropDownItemsにAddすると、
項目名がひとつしか表示されず、しかもクリックすると、本来ある項目数の数だけ
同じ処理が実行されてしまうような状態にあります。
どのようにすればそれぞれの項目の表示と、適切なクリックイベントの追加ができるようになるか
ご教授いただけないでしょうか。

ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
Hashtable ht = new Hashtable(); // この中にはいくつかデータがあります

foreach(string ID in ht.keys)

    items_for_A.Text = ID;
    items_for_B.Text = ID;

    // 編集項目
    items_for_A.Click += delegate
    {
        NewForm Frm = new NewForm(ID);
        Frm.Show(); // フォームの表示
    };
    this.ToolStripMenuItemA.DropDownItems.Add(items_for_A);

    items_for_B.Click += delegate
    {
        Program.Hoge(ID); // 処理
    };
    this.ToolStripMenuItemB.DropDownItems.Add(items_for_B);
}
0104デフォルトの名無しさん2007/08/30(木) 09:03:36
>98
>intにキャストして256未満か以上って判断もありだよ
がどう見てもC言語的な考え方だって意味
C#でそんなコードはトリッキーなだけだろ
0105デフォルトの名無しさん2007/08/30(木) 09:59:17
みんなわかってるからスルーでいいのに・・・
0106デフォルトの名無しさん2007/08/30(木) 11:00:01
>>103
ループの中で newしていないからアイテムのインスタンスが一つしかないからだよ
ToolStripMenuItem items_for_A = new ToolStripMenuItem();
ToolStripMenuItem items_for_B = new ToolStripMenuItem();
をループの中に移動してみ
0107デフォルトの名無しさん2007/08/30(木) 12:37:40
>>103
まあ真面目に入門書の一冊も読むべきだね。
基本がぜんぜんなってない感じ。
0108デフォルトの名無しさん2007/08/30(木) 13:14:04
>intにキャストして256未満か以上って判断もありだよ
ワロタ
こういう奴いるよな
ちょっと専門的なことひけらかして、俺すげーだろ的な
こういう奴と仕事したくねー
0109デフォルトの名無しさん2007/08/30(木) 13:24:50
自宅警備員に同僚っているの?
0110デフォルトの名無しさん2007/08/30(木) 13:30:10
>91
馬鹿晒しage
0111デフォルトの名無しさん2007/08/30(木) 13:39:19
>>109
自演乙
0112デフォルトの名無しさん2007/08/30(木) 13:54:45
嫉妬が炸裂するような内容だったんだろうか。
0113デフォルトの名無しさん2007/08/30(木) 14:37:18
嫉妬ってwww本気で言ってそうで笑えんわ・・・
0114デフォルトの名無しさん2007/08/30(木) 14:38:43
嫉妬は勘違いだろ
0115デフォルトの名無しさん2007/08/30(木) 14:45:52
相談スレで相談に対して答えを出しただけで
どうしてここまで叩かれているのだろうか?
C#相談スレの住人の程度が知れる。
0116デフォルトの名無しさん2007/08/30(木) 14:46:57
>>115
   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < なんだって?
  ノ/  /     \_____
  ノ ̄ゝ
0117デフォルトの名無しさん2007/08/30(木) 14:48:14
>>115
ヒント:夏休み
0118デフォルトの名無しさん2007/08/30(木) 14:48:34
>115は満月の晩に変身するタイプの人間だろ、間違いなく。
0119デフォルトの名無しさん2007/08/30(木) 14:51:08
間違いがあれば指摘すればいいのに
人格攻撃が始まっちゃうんだもんな
0120デフォルトの名無しさん2007/08/30(木) 15:14:20
単に UTF-16 で U+00?? になる文字は CP932 で1バイトになる文字なのか、
というような問題 (答えは否) のような気がするわけで、C 言語がどうとかいう話に
なるのかよくわからない。

C# の char が Unicode 文字であること、整数型にキャストできること、は C# の
仕様として明記されているわけだし (むしろ c の w_char の方が正体不明)。
0121デフォルトの名無しさん2007/08/30(木) 15:26:22
ごちゃごちゃうるさいスレになってきたなw
API使って出来なければ自作のライブラリを作るのが基本だろう。
なにを訳わからない議論してるんだ?
0122デフォルトの名無しさん2007/08/30(木) 15:33:21
RichTextBox を MS ゴシック で利用していますが、
文字列の一部を Bold にすると、その部分だけ横幅が広くなってしまい、
文字列がずれてしまいます。
Bold にしても文字幅が変わらないようにする方法はないでしょうか?

0123デフォルトの名無しさん2007/08/30(木) 15:34:26
自前で描画するしかないわな
0124デフォルトの名無しさん2007/08/30(木) 15:34:31
まぁセンスの問題だからな

でもIntにキャストするのが賛成のやつは俺の現場に近づかないでくれwwwっうぇwww
0125デフォルトの名無しさん2007/08/30(木) 15:36:51
HALFWIDTH_AND_FULLWIDTH_FORMSとかがあるしなぁ
\u00ff以下とかは流石に適当すぎだろ
01261222007/08/30(木) 15:58:52
>>123
そうですか><
残念。

ありがとうございました。
0127デフォルトの名無しさん2007/08/30(木) 16:28:48
というか日本語かどうかを識別するベーシックな方法を
誰も教えてないんじゃないか

charのメソッドになんかローカライズ情報を与えると
分かるとかそんなんあったろ
0128デフォルトの名無しさん2007/08/30(木) 16:33:49
>>124
俺様に理解できない話は別言語ってか?
0129デフォルトの名無しさん2007/08/30(木) 16:37:21
.NETってユニコードブロックをサポートしてたっけ?

サポートしてなくても
Hiragana, Katakana, HalfwidthAndFullwidthForms, CJKUnifiedIdeographs, CJKSymbolsAndPunctuation
あたりに含まれてるかどうか不等号で調べればいいだけだけど。
01301292007/08/30(木) 16:39:58
ああ、正規表現は対応してたね。
0131デフォルトの名無しさん2007/08/30(木) 16:48:26
>128
言語のライブラリに用意されてる機能を自作して悦に入るような奴は狼人間ってこと
0132デフォルトの名無しさん2007/08/30(木) 17:03:04
Encoding.GetBytes() があるから他の方法は認めません、と。
そういう考え方でOKな仕事も多いよね。
0133デフォルトの名無しさん2007/08/30(木) 17:18:27
ま、スマートじゃないわな
マジックナンバーを使うのと同じ臭いがする
0134デフォルトの名無しさん2007/08/30(木) 17:20:23
人を小ばかにして悦に入るようなヤツは何人間?
0135デフォルトの名無しさん2007/08/30(木) 17:25:30
スヘフェニンゲン
0136デフォルトの名無しさん2007/08/30(木) 18:29:22
>>122
MS ゴシックなら1pt下げれば同じになると思う
01371032007/08/30(木) 18:49:35
>>106
クリック時の挙動がまだきちんとできませんでしたが、今回実現させたいことはできました。
どうもありがとうございました。

>>107
VB6を中途半端に覚えてからしばらくWebアプリのスクリプトに流れて、久々に勉強を兼ねてWinアプリを作ってみたのですが
やっぱりきちんと基本からやり直さないとダメですね。
ご指摘ありです。
0138デフォルトの名無しさん2007/08/30(木) 18:52:54
>>137
次からはふらっと池よ
01391032007/08/30(木) 19:02:42
>>138
ふらっとも読んでたのですが向こうの>>1を読み飛ばしてしまってました。
そうします。スレ汚し失礼しました。
0140デフォルトの名無しさん2007/08/30(木) 19:24:20
プログラム全くやったことなくてC#覚えなくちゃならなくなったんだけど、
お勧めの参考書教えてください。
0141デフォルトの名無しさん2007/08/30(木) 19:50:54
フラット池
0142デフォルトの名無しさん2007/08/30(木) 20:04:13
Web検索とインテリセンスで何とかなるよ
0143デフォルトの名無しさん2007/08/30(木) 20:38:59
ActiveReports3.0を使った帳票を作成しています。.Net環境はVS2005を使用してます。

現象は、WebViewerを使ってPDF形式の出力をしようとすると、2003ServerEnterpriseだと
普通に出るのですが、2003server R2 StandardだとNo Specify Reportsと出てしまいます。
2台の同じバージョンのサーバーに入れて同じ現象でした。

また、WindowsXPの開発環境では普通に表示できます。似たような事象に出会ったかた
いらっしゃいましたら回避方法をお願いできませんでしょうか。

ここで聞くべきかあれですが、スレ違いでしたら誘導していただけると助かります。

よろしくお願いいたします。
0144デフォルトの名無しさん2007/08/30(木) 20:44:48
勢いでソートしたらここもふらっともかなり上位だし
この板で一番レス数の多い言語はC#ということになりそうだな
0145デフォルトの名無しさん2007/08/30(木) 21:05:05
まあ、C/C++ 出身者から初心者まで、ターゲットの幅が広いし。
0146デフォルトの名無しさん2007/08/30(木) 21:33:06
TabControlの中に、TextBoxを複数配置し、PropetyBindingでデータをバインドしてます。
フォームが閉じられる際に、TextBoxの値が未入力ならアラートを出すようにしてますが、
TextBoxに値があるのにif(TextBox.Text == "")がtrueとなってしまいます。
その際、一度TextBoxが含まれるTabをセレクトすると正常な挙動となります。
どのような問題が考えられますでしょうか?
0147デフォルトの名無しさん2007/08/30(木) 21:52:12
>>77
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html
0148デフォルトの名無しさん2007/08/31(金) 10:58:54
ファイルへの書き込みで質問があります。

using (TextWriter stream = createStream(filePath, Encoding.GetEncoding(932))) {
 foreach (string line in hogeList) {
  stream.WriteLine(line);
 }
}

というような感じで、5千万行(約5G)ファイルに書き込むのですが、
3千万行(約3G)ほど書き込んだ所で以下のような例外が出てしまいました。
この例外発生時はディスク容量に余裕がある状態でした。

GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
System.ArgumentException: GetBytes() または GetByteCount() を呼び出す前に、Convert() 操作を完了するか、または Encoder.Reset() を呼び出さなければなりません。エンコーダ '日本語 (シフト JIS)' フォールバック 'System.Text.InternalEncoderBestFitFallback'。
場所 System.Text.DBCSCodePageEncoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, EncoderNLS encoder)
場所 System.Text.EncoderNLS.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, Boolean flush)
場所 System.Text.EncoderNLS.GetBytes(Char[] chars, Int32 charIndex, Int32 charCount, Byte[] bytes, Int32 byteIndex, Boolean flush)
場所 System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
場所 System.IO.StreamWriter.Dispose(Boolean disposing)
場所 System.IO.TextWriter.Dispose()

見た感じEncodingの設定でコケてるように見えますが、意味が分りません。
もしかして○ギガ以上のファイルを作れない、といった感じの制限があるのでしょうか。

・Win2000
・VisualC# 2005 ExpressEdition
・.net framework2.0
0149デフォルトの名無しさん2007/08/31(金) 11:47:59
このレスを見たあなたは確実に交通事故に会います

逃れる方法はただ一つ
↓このスレに行き
http://anime2.2ch.net/test/read.cgi/rcomic/1187704465/

    // ̄ ̄ ̄ ̄\ .
   彳丿; /,,,,,,,,\ u lヽ
   入丿 -◎─◎- ;ヽミ.             
    | u:.:: (●:.:.●) u:.::|      
    |  :∴) 3 (∴.:: |   か、か、葛西なんてダサいよね♪
  ノ ヽ、   ,___,. u . ノ、   や、や、やっぱり大阪の川島が最強だよ♪
>>255-256
( ´,_ゝ`)
理論で勝てないからって恥かし過ぎw
何処をどう見ても川島厨の理論が破綻し過ぎw
川島厨の特徴 恥かしくも自分の事を川島派と名乗る
一生懸命書いた恥かしい>>151-152を誰も納得してくれないので拗ねてる
早く病院行けっつううのwww
いい加減コピペ止めろ、葛西厨装った川島厨!!
>>377
↑はいはいコピペ乙
コピペしてる奴は、その内容関係なしに、川島厨の荒らしだって事はとっくにバレてんだよ!
>>151-152の直後といい、>>255-256の直後といい、先にコピペ荒らしすんのは、常に川島厨からだからだ!!
分かったか?カス!! 反論できないからってここまで荒らすか?
好きなだけ荒らせば?このスレは元々お前を隔離する為のスレだし


と書き込んでください。書き込まなければ確実に明日交通事故にあいますよ
0150デフォルトの名無しさん2007/08/31(金) 12:33:22
コピペ君って馬鹿だな、まで読んだ。
0151デフォルトの名無しさん2007/08/31(金) 14:48:56
宿題が終わってません、まで読んだ。
0152デフォルトの名無しさん2007/08/31(金) 15:44:47
>>148
line に CP932 に属さない文字があるんじゃない?
■ このスレッドは過去ログ倉庫に格納されています