トップページ⇒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あたり。
0006デフォルトの名無しさん2007/08/26(日) 12:48:16
Visual C# Express Edition (無料)ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx

MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0007デフォルトの名無しさん2007/08/26(日) 12:48:48
Borland C#Builder2006
http://www.borland.com/jp/products/csharpbuilder/index.html

Turbo C#
http://www.turboexplorer.com/csharp

.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp

MSDN ライブラリ 2006 年 12 月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja
0008デフォルトの名無しさん2007/08/26(日) 13:11:22
乙
てかそろそろ過去ログ列挙しなくてもいいんじゃない?
0009デフォルトの名無しさん2007/08/26(日) 18:00:30
クララが建った
0010デフォルトの名無しさん2007/08/26(日) 18:21:02
997 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:06:50
Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから
分離しようってだけの自然な流れ

998 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:12:46
>Form1.Designer.csにコントロールの座標やら何やらがごちゃごちゃ書かれてるのは変だから
え?
本気で言ってるのかな

999 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:19:32
本気ですとも
反論があればどうぞ

1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/08/26(日) 12:27:13
キモイ
0011デフォルトの名無しさん2007/08/26(日) 18:38:55
むしかえすなよ
0012デフォルトの名無しさん2007/08/26(日) 18:41:36
以下スルー?
0013デフォルトの名無しさん2007/08/26(日) 18:42:06
食いつこうぜ
0014デフォルトの名無しさん2007/08/26(日) 19:15:02
SortedDictionaryに格納されている先頭のKeyの取得の仕方を教えてください。
0015デフォルトの名無しさん2007/08/26(日) 19:20:30
foreach一回目
0016デフォルトの名無しさん2007/08/26(日) 19:20:33
foreachで回して1回目だけメモっておけばよいだけでは?
0017デフォルトの名無しさん2007/08/26(日) 19:28:26
こんな感じですね?

string FirstKey;
foreach (KeyValuePair<string,int> pair in sortedDictionary)
{
 FirstKey = pair.Key;
 break;
}

これしか方法は無いのでしょうか?
0018デフォルトの名無しさん2007/08/26(日) 20:08:29
Enumerator取得して、一個目だけとればいいじゃん。
0019デフォルトの名無しさん2007/08/26(日) 20:41:23
イミナサスw
0020デフォルトの名無しさん2007/08/26(日) 20:42:49
>>18
抽象的なアドバイスなら私にも出来ますが?
0021デフォルトの名無しさん2007/08/26(日) 20:46:34
別に抽象的ではない。
意味ないけどなw
0022デフォルトの名無しさん2007/08/26(日) 20:50:39
こんな感じ?

SortedDictionary<string, string> sd = new SortedDictionary<string, string>();
sd.Add("a", "b");
SortedDictionary<string, string>.Enumerator e = sd.GetEnumerator();
if (e.MoveNext())
MessageBox.Show(e.Current.Key + " : "+e.Current.Value);
002318じゃないけど2007/08/26(日) 20:52:02
意味ないか?
foreachよりはマシだと思うけど・・・
0024デフォルトの名無しさん2007/08/26(日) 20:53:17
C#3.0 だとこれで取れる。
Console.WriteLine(sd.Keys.First());
0025デフォルトの名無しさん2007/08/27(月) 01:27:47
WebBrowserコントロールでFlashを表示するとFlash内のクリックでのイベントが
が1度目しか実行されないのだけど対処策があるか知りませんか?
コントロールから一度フォーカスを外すとイベントが処理されるようです。
IEコンポーネントを直接使うと問題はないのでコントロールのバグかと思われるのですが。
0026デフォルトの名無しさん2007/08/27(月) 02:18:02
プログラムとは関係ないんだけど、
C#の月刊技術書って何読んでる?
Windows Deveropers Magazineが休刊してから、何も読んでなくて。
0027デフォルトの名無しさん2007/08/27(月) 07:46:08
C#で作った実行ファイルを配布する時って、何の情報があればいいすか
.NET入れとけ、みたいな
つまりユーザー向け実行環境のことで相談なんすが
0028デフォルトの名無しさん2007/08/27(月) 10:10:24
.NET Framework入れとけでおk
.NET2.0なら実行環境は2.0でも3.0でもおkだから今から配るなら3.0入れとけにしとけ
0029282007/08/27(月) 10:14:31
日本語変だな
今から入れるなら3.0入れとけと言いたかった
0030デフォルトの名無しさん2007/08/27(月) 15:11:53
WindowsUpdateしておけと書く
0031デフォルトの名無しさん2007/08/27(月) 16:46:39
>>30
カスタムでないとインストールされないのでは?
0032デフォルトの名無しさん2007/08/27(月) 18:44:56
vista買えでいいんじゃね
0033デフォルトの名無しさん2007/08/27(月) 20:32:47
そんなソフト誰も使わねえ
0034デフォルトの名無しさん2007/08/27(月) 20:35:20
オブジェクトの現在の状態に対して不適切な引数が与えられて
メソッドの呼び出しが失敗したとき、
ArgumentExceptionとInvalidOperationExceptionのどちらを投げればいいの?
0035デフォルトの名無しさん2007/08/27(月) 20:35:28
誰も使うなでいいんじゃね
0036デフォルトの名無しさん2007/08/27(月) 20:37:16
>>34
おいらはInvalidOperationの方投げる
0037デフォルトの名無しさん2007/08/27(月) 20:41:58
ArgumentExceptionのInnerExceptionにInvalidOperationExceptionを設定したものを
投げる、が正解。

というのは半分冗談だけど、ArgumentExceptionの方適切だと俺は思うけどなー
InvalidOperationExceptionだと現在のステートだと引数に無関係に問答無用で
ダメだという印象を受けるよ
0038デフォルトの名無しさん2007/08/27(月) 20:52:42
引数もoperationの一部だからそんなことないのでは。

ところで全部ApplicationExceptionから派生させろって規則は結局なくなったのか
いつからなくなったんだっけ。
0039デフォルトの名無しさん2007/08/27(月) 21:02:35
2.0からだったかな
0040デフォルトの名無しさん2007/08/27(月) 21:02:48
>>38
その理屈だと、そもそもArgumentExceptionは不要という話にならないか?
0041デフォルトの名無しさん2007/08/27(月) 21:05:37
ガイドラインのInvalidOperationの
> オブジェクトの現在の状態から判断して、プロパティ セットやメソッド呼び出しが不適切な場合は、
> System.InvalidOperationException をスローする必要があります。
をどう解釈するかによるなぁ
むしろメソッド個別の問題か?
0042デフォルトの名無しさん2007/08/27(月) 21:12:08
状態によらず不正な引数が与えられた場合はArgumentExceptionで
それ以外の時はInvalidOperationExceptionとか。
0043382007/08/27(月) 21:15:26
>>40
俺も書いててそう思った。
でも状態を変更→呼び出しっていう一連の操作のうち状態変更がちゃんと行われてないって考えれば
InvalidOperationといえるような。
でもその瞬間だけみれば引数がおかしいのに他ならないからやっぱArgumentException?
0044デフォルトの名無しさん2007/08/27(月) 21:35:03
.NET Frameworkを見てると>>42が正しそうかな
0045デフォルトの名無しさん2007/08/27(月) 22:26:41
.NET 1.1のアプリって.NET2.0や3.0のフレームワーク入れたら動く?
0046デフォルトの名無しさん2007/08/27(月) 22:34:00
なんとなく動く
0047デフォルトの名無しさん2007/08/27(月) 22:37:00
ことによると動く
0048デフォルトの名無しさん2007/08/27(月) 22:41:02
動く可能性は否定できない
0049デフォルトの名無しさん2007/08/27(月) 22:43:36
もし動かなくても文句言うな
0050デフォルトの名無しさん2007/08/27(月) 22:47:48
.NET 1.1を入れちまえばいいんだろ
0051デフォルトの名無しさん2007/08/27(月) 23:50:52
>38
.NETが2.0になってからApplicationExceptionは派生するなって変わった気がする。
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
みんなわかってるからスルーでいいのに・・・
■ このスレッドは過去ログ倉庫に格納されています