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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
2デフォルトの名無しさん:2008/12/17(水) 22:19:01
C#, C♯, C#相談室 Part49
http://pc11.2ch.net/test/read.cgi/tech/1224754660/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/

Live3
http://pc11.2ch.net/test/read.cgi/tech/1221395634/

初心者のためのプログラミング言語ガイド Part12
http://pc11.2ch.net/test/read.cgi/tech/1226761546/
3デフォルトの名無しさん:2008/12/17(水) 22:19:32
4デフォルトの名無しさん:2008/12/17(水) 22:20:18
前スレ
ふらっとC#,C♯,C#(初心者用) Part34
http://pc11.2ch.net/test/read.cgi/tech/1227521785/
5デフォルトの名無しさん:2008/12/17(水) 22:22:09
>>1
6デフォルトの名無しさん:2008/12/17(水) 22:24:01
>>3がわかってるならなんで993はあんなくだらない質問をしたのか
7デフォルトの名無しさん:2008/12/17(水) 22:25:16
大文字の使い方にVB臭が
8デフォルトの名無しさん:2008/12/17(水) 22:25:18
ナイスガッツ>>1
9デフォルトの名無しさん:2008/12/17(水) 22:28:45
for(int i=0;i<回数;i++){
try
{
なんやかや;
break;
}
catch{ なんやかや; }
finally{ なんやかや; }
}

こんなんでいいんじゃね
10前スレ993:2008/12/17(水) 22:40:39
>>6
昨日から調べてるんですが有効な情報を見つけられなかったので。

>>9
ありがとうございます。
WebRequestやらFileStreamを何度も作るのは嫌ですが
ループで括るのが簡単ですよね。

throwの使い方がいまいちよくわからないのですが
この場合に利用することはできないでしょうか?
11デフォルトの名無しさん:2008/12/17(水) 22:46:40
gotoといい,テンプレ的質問だねw
「例外は本当に例外的なときに使うものであって普通の制御に使ってはいけない」
12デフォルトの名無しさん:2008/12/17(水) 22:50:10
>WebRequestやらFileStreamを何度も作るのは嫌ですが
え?
13デフォルトの名無しさん:2008/12/17(水) 22:57:02
おまいら見事なスレタイをつけてくれた993さんなんだから
もっと優しく教えてやれよ
14デフォルトの名無しさん:2008/12/17(水) 23:00:23
なんで?
15デフォルトの名無しさん:2008/12/17(水) 23:06:33
良く見かける機能で
エクスプローラの空白部分をダブルクリックすると
上の階層に上がると言うのがありますが
どうやったらできるのでしょうか?
16前スレ993:2008/12/17(水) 23:16:09
>>11
ごめんなさい。

>>13
なにかおかしいところがありましたか?
17デフォルトの名無しさん:2008/12/17(水) 23:21:10
>>15
ちょっとプログラム名を挙げてみて
18デフォルトの名無しさん:2008/12/17(水) 23:23:28
>>15
ランチャーソフトで言えば
Clock Launcherとかに搭載されてます。
19デフォルトの名無しさん:2008/12/17(水) 23:23:40

Color ActiveColor = Color.Gray;
int intARGB = (int)(ActiveColor.ToArgb);

こうやると、
エラー: メソッド グループ 'ToArgb' を非デリゲート型 'int' に変換することはできません。
     このメソッドを呼び出すことはできません。
となりました。単純にint型の値で受けて、数値を変更してから
使いたいのですが、どのようにしたらよいでしょうか。
2015:2008/12/17(水) 23:24:03
ごめんなさい。

>>18でした。
21デフォルトの名無しさん:2008/12/17(水) 23:26:35
>>19
メソッド呼び出しに()は必須
22デフォルトの名無しさん:2008/12/17(水) 23:29:02
>>21
そうだったのですか!!
わかりました、やってみたら確かに解決しました。
ありがとうございました!!
23デフォルトの名無しさん:2008/12/17(水) 23:37:12
>>19
ランチャーか…メッセージフック臭いなあ

本当にメッセージフックだとC#から手が出ないんだよね
DLLにできないから
24デフォルトの名無しさん:2008/12/17(水) 23:40:16
前スレ>>994
> なんだか分かりませんが
> 元コードのほうは正規表現つかってんじゃない?
> C#のほうは単純にstringを置換してるだけっしょ?
> Regexクラス使わないと駄目じゃん

前スレ>>1000
> buffer.Replace("\n", @"\X0e");
>
> は何もしてないよ。戻り値捨ててるやん
> stringクラスは不変だからね


すっかり忘れてましたorz・・・

ご指摘ありがとうございます(´・ω・`)
2515:2008/12/17(水) 23:52:55
>>23

メッセージフックと言うのですね。
なんか難しそう・・・・
他に方法あったら知りたいですが・・・

ちょっとメッセージフックについて調べてみます。
26前スレ:991:2008/12/18(木) 00:50:12
前スレ991のコピーです

C#で簡単なデーターベースを扱いたい場合は何を使うのが一般的ですか?

用途は、ファイルにタグ付けみたいなことをしたいのです。
あらかじめファイルのリストを登録しておいて(1000アイテムぐらい)、
〜タグが付いているファイルを列挙するのが主な目的です。
# えっちな画像をタグ管理するソフトだと思っていただいても構いません

ちなみにデーターベースの経験全く持ってゼロです
(遙か昔、DelphiからBDE経由でParadoxDBのデータベースをちょっと触ったことぐらいしかありません)

規模としてはテーブル一つあたり1000〜4000項目 位を登録する予定です。
また、画像用、音楽用とテーブルを用意するつもりですが、
一つのテーブルにまとめて 画像タグ、音楽タグ などをつけた方が良いでしょうか?
(そうすると 3万近くの項目を扱わなければなりません)

データーベースサーバを必要としないシステムが良いです。
また、友人にソフトウェアを渡す場合もあり得るので、出来るだけ単体で配布できるものが良いです。

この用途で一番お手軽な方法は何でしょう?
SQLite(一応追加で入れてみた)? SQL Server Compact ?
27デフォルトの名無しさん:2008/12/18(木) 01:16:07
SQL Server Compactで問題ないと思う。
配布方法はこちらが参考になる
http://msdn.microsoft.com/ja-jp/library/aa983326.aspx

SQLite(System.Data.SQLite)を使いたいなら、そちらでも可
28デフォルトの名無しさん:2008/12/18(木) 01:28:04
VisualStudio2005 でプログラムを作っています。
c#でexcelを操作するプログラムを作りたいのですがテンプレのサイト等を参考にしたのですがよくわからなかったのでこちらに書き込ませていただきました
知りたいことは

1・console アプリケーションでexcelの操作はできるのか
2・できる場合、必要な初期設定についてどうすればいいのか
(プロジェクト→参照→COM→officeなんちゃらの参照でいいのならばusingについてから教えてください)
3・プログラム内で作成した3種類の数値をexcelに渡し折れ線グラフを作成する。
4・プログラム内ではfor文で約1000回データを作成するので1000個分のグラフを作り、保存したい

以上の4つです。よろしくお願いいたします。

29デフォルトの名無しさん:2008/12/18(木) 01:32:54
なんかVBAでも使った方が簡た(ry
30デフォルトの名無しさん:2008/12/18(木) 02:24:17
>>27
サンクス
31デフォルトの名無しさん:2008/12/18(木) 02:54:10
>4・プログラム内ではfor文で約1000回データを作成するので1000個分のグラフを作り、保存したい
終わりませんw
32デフォルトの名無しさん:2008/12/18(木) 02:54:53
>>26
別にいいけどmdbでも全然大丈夫じゃね?
33デフォルトの名無しさん:2008/12/18(木) 05:57:11
解説サイト読んでもイマイチよく分からないんだけどデリゲートって結局何やってるの?
javascriptで
obj.hoge = function hogefunc() { 〜〜 }
とかこれと同じようなイメージ持ったんだけどこんな認識でいいの?
34デフォルトの名無しさん:2008/12/18(木) 06:12:43
うん
35デフォルトの名無しさん:2008/12/18(木) 06:16:09
ありがとう
そういう前提で解説サイトのデリゲートの項目を読めば理解が進みそうだ
36デフォルトの名無しさん:2008/12/18(木) 07:35:55
Rubyのブロック構文とかClosureと同じようなもんでしょ?違う?
37デフォルトの名無しさん:2008/12/18(木) 08:03:49
Rubyは触ったことないんで…すまぬ、すまぬ…
38デフォルトの名無しさん:2008/12/18(木) 17:28:50
メニューストリップアイテムのセパレータの上をマウスが通過する時にフォーカスがドロップダウンの一番上に戻されるんですが何が原因か全く不明
バグか?
39デフォルトの名無しさん:2008/12/18(木) 18:05:55
そりゃバグでしょうよ。
あなたの書いたコードのね
40デフォルトの名無しさん:2008/12/18(木) 18:31:36
フォームエディタの話なら確かに怪しい挙動してるな。
メニューにText入力してる時に勝手に決定されたりフォーカス外れたりとか。
41デフォルトの名無しさん:2008/12/18(木) 19:39:25
tryやcatchで{}が省略できないのは何故ですか?
42デフォルトの名無しさん:2008/12/18(木) 19:42:57
Windowsアプリで、メッセージが来るまで効率よくかつ反応よく待機するには
MsgWaitForMultipleObjectsだったかを呼び出すしかないですかね?
メッセージが来るまでただ待ちたいだけです。

これってフォームアプリから呼び出すのに特に注意事項とかありますかね?

ネイティブの世界に明るくないので問題あるのかよく分からない。
マネージドな世界だけで出来ればそれにこしたことはないんですが、ちょっと無理そうで…

43デフォルトの名無しさん:2008/12/18(木) 19:51:24
>>41
catchを使わないtryの意味って何すか?
44デフォルトの名無しさん:2008/12/18(木) 20:02:55
try
 Hoge();
catch (HogeException e)
throw e;
みたいな感じで書きたいんでしょ
できてもおかしくはないな
>>43 finally
45デフォルトの名無しさん:2008/12/18(木) 20:12:57
tryはブロックだからな
46デフォルトの名無しさん:2008/12/18(木) 21:35:50
if
else if
...
else if
else

try
catch()
...
catch()
finally
は似てるよね的な感じか。
47デフォルトの名無しさん:2008/12/18(木) 22:24:58
C#で作ったソフトって
メモリ使用量が多く見えるのですが?

どうなんですかね?
48デフォルトの名無しさん:2008/12/18(木) 22:30:20
仮にもプログラマならタスクマネージャなんかに頼るなよ
あの表示を減らすだけならウインドウを最小化したりSetProcessWorkingSetSizeを呼び出したりすれば
簡単に減らせる
49デフォルトの名無しさん:2008/12/18(木) 22:38:10
1Gも2Gも4Gもメモリつみながら数十M程度のメモリ使用量でもぎゃンぎゃン言われる風潮は何なんだろうな
50デフォルトの名無しさん:2008/12/18(木) 23:06:52
form1.Opacity = Convert.ToDouble(domainUpDown1.Text);

コンパイルはできるけどエラーがでる。
なぜなんだろうか?
51デフォルトの名無しさん:2008/12/18(木) 23:10:50
何のエラーかいちいち聞かないといかんのか・・
52デフォルトの名無しさん:2008/12/18(木) 23:12:58
domainUpDown1.Textがdoubleの数値を表す書式になってないんじゃないの
53デフォルトの名無しさん:2008/12/18(木) 23:15:41
5450:2008/12/18(木) 23:23:35
わかりました。
ちょっと考えます。
55デフォルトの名無しさん:2008/12/18(木) 23:59:52
>>47
ソフト自体のメモリ使用量じゃないよそれ。
ガベコレはいったん多めにメモリ取っておいた方が実行効率いいんだし。
56デフォルトの名無しさん:2008/12/19(金) 00:51:20
50MBくらいの画像に対して画像処理するプログラム作ってますが
途中でメモリが足りないというエラーが出て落ちます。
メモリは3GB積んでいるのでそうかんたんになくならないはずなんですが。



↓こんなプログラムです

for(int i=0;i<画像の枚数;i++)
{
  Bitmap bmp = new Bitmap();
  //↓ここで画像処理

  //↑
  bmp.Dispose();
  GC.collect();
}

どの画像に対してやってもループ2〜3回目で落ちてしまいます。
ガベコレしてもメモリの空き容量が全然増えないのがなぞです。
アドバイスお願いします。
57デフォルトの名無しさん:2008/12/19(金) 00:56:10
Disposeが重要で,GCは全く関係ないよ
GC.Collectは無くても変わらない
ここで画像処理 の中にリソースの掴みっぱなしがあるとか
58デフォルトの名無しさん:2008/12/19(金) 01:03:30
GCは不要なんですか
ちなみに↓こうするとなぜか問題なく動きます

for(int i=0;i<画像の枚数;i++)
{
  Bitmap bmp = new Bitmap();
  //↓ここで画像処理

  //↑
  bmp.Dispose();
  GC.collect();
  MessageBox.Show("プギャー");//←これを挿入
}

タスクマネージャーでメモリ量を監視していると
メッセージボックスを表示させた瞬間にメモリ量が
いっきに減ります
不思議でしょうがないです(・・;)
59デフォルトの名無しさん:2008/12/19(金) 01:05:38
似たようなプログラム作って数万枚の画像を処理してるけど
512MBのメモリが足りなくなったことなんてないな
DisposeのタイミングはCLR依存のはずだからDisposeしたら
すぐに解放されるわけではないよ
60デフォルトの名無しさん:2008/12/19(金) 01:36:21
その画像処理ってのがクサイにきまってんじゃん
61デフォルトの名無しさん:2008/12/19(金) 02:01:52
>>42
WinFormsのメッセージループをMsgWaitForMultipleObjectsで置き換えるのか。

たとえ今上手く動いても、.NetFrameworkの実装が変わって動かなくなる可能性もあるし
俺なら怖くてできないな。

> マネージドな世界だけで出来ればそれにこしたことはないんですが、ちょっと無理そうで…

別スレッドで WaitHandle.WaitAny で待機して、
シグナル状態になったら、UIスレッドにメッセージを送信するんじゃダメなほどの効率が必要なの?
62デフォルトの名無しさん:2008/12/19(金) 09:02:58
>>59
> DisposeのタイミングはCLR依存のはずだからDisposeしたら
> すぐに解放されるわけではないよ
そんなわけないだろ何のためのDisposeだよ
Disposeのタイミング→GCのタイミングならわかるけどこの場合GCは関係ない
63デフォルトの名無しさん:2008/12/19(金) 10:25:01
C#とJAVA、
どっちがカンタン?
64デフォルトの名無しさん:2008/12/19(金) 10:32:23
言語のレベルでは大差ない
65デフォルトの名無しさん:2008/12/19(金) 10:50:27
C#のほうが構文多いけど
よく使う範囲では大体同じ
66デフォルトの名無しさん:2008/12/19(金) 11:10:53
初心者が学び始めて
すぐに使えるようになるのはどっち?
67デフォルトの名無しさん:2008/12/19(金) 11:12:55
個人的にはC#

窓アプリ以外は
68デフォルトの名無しさん:2008/12/19(金) 11:18:38
使うって何に使うのよって話
69デフォルトの名無しさん:2008/12/19(金) 11:21:37
ナンパに使います
70デフォルトの名無しさん:2008/12/19(金) 11:49:53
C#はVSのインストールだけで環境が整うのが大きい
71デフォルトの名無しさん:2008/12/19(金) 16:36:50
foreach (DataRow dr in ds.Tables[1].Rows)
{
listView1.Items.AddRange((ListViewItem[])dr.ItemArray); // ←どうやってキャストしたら良いでしょうか?
}
72デフォルトの名無しさん:2008/12/19(金) 16:48:13
キャストは無理 継承関係もないしキャスト演算のオーバーロードもないからな
Enumerable.SelectからToArrayするか、素直にListViewItem[]をnewしてfor回して一つずつ代入
73デフォルトの名無しさん:2008/12/19(金) 17:53:52
いくつかのコンポーネントが配置されたFlowLayoutPanelに、追加でコンポーネントを挿入する
方法を教えて下さい。
http://msdn.microsoft.com/ja-jp/library/z9w7ek2f(VS.80).aspx
を読むと、挿入したいコンポーネントを選んでマウスを持ってくると、挿入バーが
表示されるように書いてありますが、それらしいものが表示されません。

もしくは最後尾に追加したコンポーネントを移動させたいのですが、他のコンポーネントが
移動してくれません。何か設定とか有りますでしょうか?
74デフォルトの名無しさん:2008/12/19(金) 18:29:16
>>72
わかりました
ありがとうございます
75デフォルトの名無しさん:2008/12/19(金) 23:47:38
C#のプログラムをネイティブコードのexeにしたら実行速度はどのくらい変わりますか?
76デフォルトの名無しさん:2008/12/19(金) 23:49:14
やってることが同じなら原理的に変わらない
77デフォルトの名無しさん:2008/12/20(土) 00:51:39
>>73
俺も仕方無いので、最後尾に入れてから挿入したいところ以降のコンポーネントを全部
移動させたりしてる。こんなはず無いよね。
78デフォルトの名無しさん:2008/12/20(土) 02:25:18
>>73
ttp://www.uploda.org/uporg1868478.png

s/コンポーネント/コントロール/だとして、こういうことがしたいということだよな?
てか、書いてる通りにやったら普通に出来たけど

>>73の記述が若干怪しいけど、ちゃんとドラッグ&ドロップしてるよな?
79デフォルトの名無しさん:2008/12/20(土) 07:53:57
非同期アクセスに対応したListやDictionaryクラスは
用意されていないでしょうか?
80デフォルトの名無しさん:2008/12/20(土) 09:36:46
>>79
たぶんないから SyncRoot を取得して lock
8173:2008/12/20(土) 11:32:02
>>78
あああ〜、その通りです。
ドラッグするのですね。
ツールボックスでクリックしてカーソルを持って行っても黒線は出ないのですね。
配置済みのボタンを移動させても黒線が出ますね。
実際にやりたいのは、配置各種設定済のパネルを移動させたいのですが、それだと
なぜかどこへ持っていっても黒線が出なくて困っています。
でも、ボタンで実際の動きが分かったので、パネル側の設定か何かの問題で黒線が
状態になってるかも知れないのでいろいろ試してみます。
ありがとうございました。
82デフォルトの名無しさん:2008/12/20(土) 20:04:01
散々使ってるメソッドのパラメータを後で増やすと書き換えるのが大変ですが何か対策方法はありますか?
83デフォルトの名無しさん:2008/12/20(土) 20:12:48
>>82
・オーバーロード
・引数専用の型を作る(ex. EventArgs)
84デフォルトの名無しさん:2008/12/20(土) 20:32:20
いつの間にか修正来てるね

[FIX] Microsoft Visual Studio 2008 Service Pack 1 の英語以外の言語バージョンをインストールした後、
ローカライズされた一部の IntelliSense テキストが英語に戻ることがある

http://support.microsoft.com/kb/957507
85デフォルトの名無しさん:2008/12/20(土) 21:00:04
86デフォルトの名無しさん:2008/12/20(土) 23:11:46
プログラム初心者で、Windowsでのプログラミングはほぼ初めてです。

とある人が公開してるアプリケーションで、プロジェクト一式も公開されているものがあります。
その中には
hoge.csproj
hoge.sln
hoge.suo
hoge.config
AssemblyInfo.cs
[image]フォルダ
と、dllファイルが複数ありました。こちらでそのプログラムがいじれるのかと思っていましたが、
各種csファイルが含まれていないので無理なようでした。
ここに含まれていたdllだけでも使用したいのですが、dllファイルをみれば
そのdllファイルの使い方などが分かるものなのでしょうか?
どうググれば、その方法がわかるでしょうか?

C#の質問ではないとは思いますが、これを機にC#覚えようかと思っています。
よろしければご教授ください。
87デフォルトの名無しさん:2008/12/20(土) 23:19:46
>>86
そもそも、そのDLLの使用は許可されているの?
普通は人が使う事を想定しているのなら、ソースコードなりドキュメントなりが公開されていると思うのだが
88デフォルトの名無しさん:2008/12/21(日) 00:57:42
今作っているプロジェクトをコピーしておいて
それをベースにした新しいプロジェクトを作りたいとき
どうすればいいですか?
89デフォルトの名無しさん:2008/12/21(日) 01:00:36
>>88
今作っているプロジェクトを丸ごとコピーしてそれをベースして作ればいい
90デフォルトの名無しさん:2008/12/21(日) 09:49:31
RGBで反対の色を簡単に取得する方法はありますか?
91デフォルトの名無しさん:2008/12/21(日) 10:00:10
「反対の色」を定義したまえ
92デフォルトの名無しさん:2008/12/21(日) 10:12:54
白←→黒であります
93デフォルトの名無しさん:2008/12/21(日) 11:18:35
前にも見たなぁ。定義を出せと言われて例しか出せない奴。
仮に、それが例ではなく定義と言うならこんなコードになるんだぜ?

switch(色)
{
 case 黒:
  return 白;
 case 白:
  return 黒;
 default:
  throw new ArgumentOutOfRangeException();
}
94デフォルトの名無しさん:2008/12/21(日) 11:38:46
ワロタ
緑の反対は紫でいいのかね?
95デフォルトの名無しさん:2008/12/21(日) 11:45:39
反対って color ^ 0xFFFFFF のことか?
96デフォルトの名無しさん:2008/12/21(日) 11:53:25
>>90
補色のことでしょ。補色って言葉を知らなくてもネガって言えばいいのに。
Color構造体からRGBの各値は取得できるんだから、それらの1の補数から
FromArgb()するだけじゃないのか?
97デフォルトの名無しさん:2008/12/21(日) 11:55:00
ダイアログ系コントロールに漏れなく付いてくるヘルプボタンを消す裏ワザを教えてください
98デフォルトの名無しさん:2008/12/21(日) 12:55:48
SetWindowLongPtr
99デフォルトの名無しさん:2008/12/21(日) 15:06:44
灰色の補色は?
100デフォルトの名無しさん:2008/12/21(日) 15:19:44
こんにちは
今までプログラミングの経験は皆無だったのですが、javarcript→C#と勉強をしています。
ほぼ独学なのですが、いい勉強法がありますでしょうか?
今は例題が載った参考書を買ってサンプルを組み立てつつ理解を深めるという形をとっています。
皆さんのご意見をお願いします。
101デフォルトの名無しさん:2008/12/21(日) 15:25:47
そういうサンプルを作るような学習は意味ない
自分の作りたいソフトを試行錯誤しながら作るのが一番
102デフォルトの名無しさん:2008/12/21(日) 16:10:43
サンプルなら改造から始めればいいんじゃないのか
103デフォルトの名無しさん:2008/12/21(日) 18:15:49
> 自分の作りたいソフトを試行錯誤しながら作るのが一番
そこから始めるとほぼ確実に途中でプログラミング全般を諦める
104デフォルトの名無しさん:2008/12/21(日) 18:26:58
なんのためにC#を学習するかってことじゃないか
105デフォルトの名無しさん:2008/12/21(日) 18:31:07
とりあえずはHello worldからだな
一通り出来たらHallo workに行くと・・・
106デフォルトの名無しさん:2008/12/21(日) 18:32:09
>>105
はえーYO! w
107デフォルトの名無しさん:2008/12/21(日) 18:42:28
>>87
作者さんのミスだったようです。全ファイル公開していただけました。
お騒がせいたしました。
10887:2008/12/21(日) 21:24:59
>>107
そうか、作者のミスだったのか。
ライセンス無視して使おうとしてるのかと思ったぜw
109デフォルトの名無しさん:2008/12/21(日) 22:52:09
WinFormsの使い方詳しく載っているところは?
110デフォルトの名無しさん:2008/12/21(日) 22:57:45
MSDN
111デフォルトの名無しさん:2008/12/22(月) 00:34:17
MFCからC#に移ってきたけど
めちゃくちゃわかりやすくて感動した
112デフォルトの名無しさん:2008/12/22(月) 07:15:01
むしろMFCのわかりにくさが異常
全然APIをラップできてないからなw
113デフォルトの名無しさん:2008/12/22(月) 08:45:15
MS製ライブラリはバランスが悪いよな
激しく低レベルで取扱注意 or 別物なぐらい高級で機能不足の二つ

どっちも深い知識がないと使いこなせないw
114デフォルトの名無しさん:2008/12/22(月) 09:09:28
まあ、バージョン3から使えば大丈夫だよ。
115デフォルトの名無しさん:2008/12/22(月) 12:40:05
>>113
.NETはそのうちのどちら?
116デフォルトの名無しさん:2008/12/22(月) 12:42:40
後者に決まってんだろ
頭湧いてるのか
117デフォルトの名無しさん:2008/12/22(月) 17:45:56
.NET = 激しく低レベルで取扱注意
と読み換えたら笑ってしまったw
118デフォルトの名無しさん:2008/12/22(月) 17:57:13
119デフォルトの名無しさん:2008/12/22(月) 18:33:04
しかし .NET はむしろそのふたつ共存だよなあという気が…
だから糊とか言われるわけで
120デフォルトの名無しさん:2008/12/22(月) 19:34:09
ContextMenuStripのメニューの並び順の設定ってどうやるんだっけ?
久しぶりにMSDN見たが読みにくすぎで笑った
121デフォルトの名無しさん:2008/12/22(月) 19:46:27
(´・ω・`)しらんがな
122デフォルトの名無しさん:2008/12/22(月) 19:55:41
C++からC#に移行したいんだけど
C++の基本的要素(使用可関数やらなにゃら)は引き継げるかな?
とりあえずSTLは引き継ぎたい
123デフォルトの名無しさん:2008/12/22(月) 19:57:14
124デフォルトの名無しさん:2008/12/22(月) 20:05:32
>>123
C++/CLIでSTL作って、C#でアクセスすることによってその効果を適用することができるの?
CLIはあんましわかんないわなあ・・・
125デフォルトの名無しさん:2008/12/22(月) 20:07:48
無理
最低限のインターフェイスのみ
どーしてもSTL使いたいっていうわがままで迷惑な人向け
126デフォルトの名無しさん:2008/12/22(月) 20:13:29
便乗だけど、C#ってなんでSTLないの?
もちろんそれに代わるすごいのが用意されてるんだよね?
C#はじめようかと思ってショックなんだが
127デフォルトの名無しさん:2008/12/22(月) 20:18:01
System.Collections.Generic+LINQこれ最強
128デフォルトの名無しさん:2008/12/22(月) 20:37:37
>>116
皮肉ったつもりなんだけど真に受けたの?
129デフォルトの名無しさん:2008/12/22(月) 20:39:22
>>113
WinFormsとWPFにもあてはまる
130デフォルトの名無しさん:2008/12/22(月) 21:36:25
Visual C# 2008 Express EditionのIDEの使い方
ちゃんと解説されているサイトってない?
131デフォルトの名無しさん:2008/12/22(月) 21:53:15
>>124
その記事にC#から使うって書いてあるだろ
132デフォルトの名無しさん:2008/12/22(月) 22:31:48
>>124
それはC#でSTLを使うんじゃなくて,物好きで迷惑なアホがC++/CLIでSTL/CLRを使った
クラスライブラリを作っちゃった時に,何とかそのライブラリをC#から使う方法
133デフォルトの名無しさん:2008/12/22(月) 23:12:17
VB6互換用のコントロールもCぁから使えるでしょ。
usingさえすればそれと一緒。
134デフォルトの名無しさん:2008/12/22(月) 23:22:34
残念ながらそれとは全く違う。
STL/CLR自体はテンプレート使ってるからC++/CLI専用。
VisualC.StlClrはアセンブリをまたいでC++/CLIはもちろんC#などから
STL/CLRのオブジェクトにアクセスするための単なるインターフェイス集。
135デフォルトの名無しさん:2008/12/22(月) 23:24:03
それとは少し違うな。
C#から使う場合はファクトリをC++/CLIで書かなくてはいけない。
ソース見てないけど、.NET互換のGenericじゃなくてtemplateの機能を使ってるんじゃないかな。
C#から使える機能はSTL/CLRの一部だけ。
136デフォルトの名無しさん:2008/12/22(月) 23:27:23
だが俺の考えは違った
137デフォルトの名無しさん:2008/12/22(月) 23:33:45
いや合ってる
138デフォルトの名無しさん:2008/12/22(月) 23:38:01
C++で作ったDLLをC#から使うにはどうするの
139デフォルトの名無しさん:2008/12/22(月) 23:41:50
ふつうに
140デフォルトの名無しさん:2008/12/22(月) 23:42:28
C++/CLI
extern "C"でネイティブDLL作ってP/Invoke
COM
141デフォルトの名無しさん:2008/12/23(火) 01:08:49
PDFを入出力するフリーのライブラリないですか?
142デフォルトの名無しさん:2008/12/23(火) 01:22:37
>>141
質問する前に、「pdf .net」で検索してきな
143デフォルトの名無しさん:2008/12/23(火) 11:56:26
独習C#を買ってやってるんですが、うまくいきません。

テキストでは

C:\>csc example.cs

でコンパイルしろと書いてるんですが、これではエラーが起こってしまいます。

C:\>csc example.cs.txt

だとしっかり??動くんですが、なんでかよくわかりません。

ちなみにプログラムは初めてやります。ご教授おねがいします。
144デフォルトの名無しさん:2008/12/23(火) 11:59:44
メモ帳か何かで保存するときにファイル形式をテキストファイル(*.txt)にしただろ
そんなんでよくプログラミングやろうと思ったね
145デフォルトの名無しさん:2008/12/23(火) 12:04:47
つ 登録されている拡張子も表示する
146デフォルトの名無しさん:2008/12/23(火) 12:11:13
そのレベルで独習C#は挫折しそうだなw
まずはピュアなC#の本じゃなくてVisual C#の本買ってきて
Visual C# Expressをダウンロードして遊んだ方が続くんじゃないかな
147デフォルトの名無しさん:2008/12/23(火) 12:12:31
テレビとか漫画に影響されて始めましたってレベルだな
148デフォルトの名無しさん:2008/12/23(火) 12:21:31
何に使うのか全く分からないまま独習C#で文法だけ覚えるのは正直辛いと思う
149デフォルトの名無しさん:2008/12/23(火) 12:22:39
すみませんでした。
ありがとございました。
150デフォルトの名無しさん:2008/12/23(火) 14:21:37
つかC#をコマンドラインでコンパイルなんて初めて見た。
最初からIDEで何か問題あるか?今時個人でmakefileもないだろう
151デフォルトの名無しさん:2008/12/23(火) 14:25:42
あのねぇ、ちょっと前まではExpressEditionがなくて
SharpDevelopとかしかなかったの。

初学者はコマンドラインでコンパイルしたり、サンプルからリソースエディタみたいなのビルドして
リソースファイル作ったりとかしてたの(T_T)
152デフォルトの名無しさん:2008/12/23(火) 14:32:49
c#のプログラムってかんたんにリバースエンジニアリングされちゃうんでほ?
153デフォルトの名無しさん:2008/12/23(火) 14:36:25
>>152
ソースコードに戻せるという意味ならそうだよ。
154デフォルトの名無しさん:2008/12/23(火) 15:26:45
C#ビルダー使ってたからそんなことしてない
155デフォルトの名無しさん:2008/12/23(火) 15:36:23
別に逆コンパイルされて何の問題が?って感じだなあ
商用なら対策用ソフトが高価だが売ってるし
156デフォルトの名無しさん:2008/12/23(火) 18:26:53
今はEEがあるじゃん
157デフォルトの名無しさん:2008/12/23(火) 19:51:55
コメントとかも戻るの?
俺、コメントに顔文字とか使ってるんだけどw
158デフォルトの名無しさん:2008/12/23(火) 19:57:44
戻ったらコメントじゃねえ
159デフォルトの名無しさん:2008/12/23(火) 19:59:51
だよね。安心したw
160デフォルトの名無しさん:2008/12/23(火) 22:48:23
>>159
(・∀・)いや、安心している場合じゃないぞw
161デフォルトの名無しさん:2008/12/23(火) 22:50:11
C#のプログラムってLinuxでも動く?
162デフォルトの名無しさん:2008/12/23(火) 22:53:17
>>161
Mono を使えば。
163デフォルトの名無しさん:2008/12/23(火) 22:54:17
wineでおk
164デフォルトの名無しさん:2008/12/24(水) 02:29:58
久しぶりにPInvokeすると低レベルな所の使いにくさが際立つな。
165デフォルトの名無しさん:2008/12/24(水) 03:03:37
そーなのか
166デフォルトの名無しさん:2008/12/24(水) 04:49:40
VC#で作ったプログラムを公開・配布したいときは
binフォルダの中のReleaseフォルダの中の.exeファイルを配布すればいいのですか?
objフォルダじゃないですよね・・・?
167デフォルトの名無しさん:2008/12/24(水) 11:43:28
>binフォルダの中のReleaseフォルダの中の.exeファイルを配布すればいいのですか?
それでおk
168デフォルトの名無しさん:2008/12/24(水) 13:53:39
>>164
ぴん・・・ぼけだと?w
169デフォルトの名無しさん:2008/12/24(水) 14:11:16
( ´,_ゝ`)プッ
170デフォルトの名無しさん:2008/12/24(水) 14:21:05
>>167
ありがとうね
171デフォルトの名無しさん:2008/12/24(水) 19:47:04
foreachが便利とかって時々聞くんですが
forに比べてそんなに便利なんですか?
172デフォルトの名無しさん:2008/12/24(水) 19:51:00
>>171
例えば配列要素を全て合計するような単純なイテレーションなら
foreach を使ったほうが速い。
173デフォルトの名無しさん:2008/12/24(水) 19:52:21
foreachにもループ回数カウント機能あればいいのに
174デフォルトの名無しさん:2008/12/24(水) 20:01:42
>>173
どういう使い方を想定してる?
175デフォルトの名無しさん:2008/12/24(水) 20:02:14
その要素を指すインデックスにアクセスしたいんだろ。
176デフォルトの名無しさん:2008/12/24(水) 20:04:53
>>172

速いっていうのは実行速度が?
それともコーディングが?
177デフォルトの名無しさん:2008/12/24(水) 20:07:18
>>176
実行速度
178デフォルトの名無しさん:2008/12/24(水) 20:18:09
IEnumerator自分で実装したことがあればそんな愚論は絶対に吐けないと思うw
179デフォルトの名無しさん:2008/12/24(水) 20:38:40
配列に対するforeachは最適化されるよ
確かfor (int i = 0; i < array.Length; i++)も同様に最適化されるんだったとおもう
180デフォルトの名無しさん:2008/12/24(水) 21:17:31
>>173
C# 4.0 だと
public static IEnumerable<dynamic> WithIndex<TSource>(this IEnumerable<TSource> enumerable)
{
  int index = 0;
  foreach (TSource item in enumerable)
  {
    yield return new { Index = index, Item = item };
    index++;
  }
}
みたいなことができるっぽい。

今の段階だと dynamic の部分で適当にクラスを作成するしかないかな?
何かうまい抜け道がある気がするんだが。
181デフォルトの名無しさん:2008/12/24(水) 21:23:55
ArrayEnumeratorって、
普通にインデクサを使ってアクセスしているのに何故高速かと思ったら最適化されているんだ。
182デフォルトの名無しさん:2008/12/24(水) 21:29:56
>>180
とんでもなく遅そうだなそれ
わざわざdynamicにする意味がわからない
struct IndexItemPair<TSource> { public int Index { get; } public TSource Item { get; } }
とか返せばいいだろ

foreachにこだわらなくてもこういうのでいいんじゃないの
static void ForEach<TSource>(this IEnumerable<TSource> source, Action<TSource, int> action) {
 int index = 0;
 foreach (TSource item in source) action(item, index++);
}
183デフォルトの名無しさん:2008/12/24(水) 21:35:10
>>180
こうでいいじゃん

public static void ForEach<T>
(this IEnumerable<T> e, Action<TSource, int> action)
{
int index = 0;
foreach(var item in e)
{
action(item, index);
index++;
}
}
184デフォルトの名無しさん:2008/12/24(水) 21:36:54
というか 4.0 だの新しく作るだの考えんでもメソッド形式なら
確か Select, Where 辺りのオーバーロードにあった気がする
んだが
185デフォルトの名無しさん:2008/12/24(水) 21:38:44
foreachってforより遅いだろ
186デフォルトの名無しさん:2008/12/24(水) 21:41:46
>>184
そういうのを本来の用途から外れて無理に転用するのはお行儀が悪い
items.Select((item, index) => { item.Hoge(index); return null; });
とか書かれてても何がしたいのかわからんでしょ
187デフォルトの名無しさん:2008/12/24(水) 21:46:15
>>186
その例は使い方悪すぎ。書くならこう

var items =
 source
  .(略)
  .Select((value, index) => new { Index = index, Value = value });

foreach(var item in items) {
 item.Value.Hoge(item.Index);
}
188デフォルトの名無しさん:2008/12/24(水) 21:46:20
Selectは遅延評価で、ForEachは即時評価じゃないとダメだからな
189デフォルトの名無しさん:2008/12/24(水) 21:47:23
ちなみにポインタ使った最適化になる。

>IEnumerator自分で実装したことがあればそんな愚論は絶対に吐けないと思うw
あほう
190デフォルトの名無しさん:2008/12/24(水) 21:50:22
>>172

(゚д゚)ハァ?
191デフォルトの名無しさん:2008/12/24(水) 21:53:18
ファイルの書き込み完了前に、そのファイルをコピーしたいと思っています。
その場合、ファイルのサイズが書き込み完了になるまでわからないのですが、
その書き込み完了をどのようにして判定すればよいでしょうか?
FileStreamとBinaryReaderを使って成長中のファイル(書き込み完了前のファイル)を読み出したい
と思っています。周期的に更新時間をチェックし、更新時間が変わらなくなったら、という判定を
考えていたのですが、もっと適切な方法はあるのでしょうか?
助言をいただけたらと思います。
192デフォルトの名無しさん:2008/12/24(水) 21:54:33
>>182,183
戻り値を IEnumerable<dynamic> にした理由は IEnumerable を返したかったから。
enumerable.WithIndex().Hoge(...) みたいなことがしたい。
まあ>>182の言うようにインデックスと実体のペアを返すので十分良いけど。
193デフォルトの名無しさん:2008/12/24(水) 21:59:24
>>190
配列に対するforeachと,for (int i = 0; i < array.Length//Lengthプロパティを使うのが大事; i++)
の形のforはどちらも最適化されてほとんど同じ速度になる
194デフォルトの名無しさん:2008/12/24(水) 22:06:44
なんねーよ知ったか乙
195デフォルトの名無しさん:2008/12/24(水) 22:29:15
変わるとしたらJITコンパイラ側で変わるのかね?CILでは違うコードを吐くはずだから
196デフォルトの名無しさん:2008/12/24(水) 22:34:00
全く同じじゃないけどよく似たILになるよ
素直にやったらIEnumeratorを操作したりするようなコードになることを考えれば,
差はほとんどないと言っていいと思う
197デフォルトの名無しさん:2008/12/24(水) 23:45:51
>>180
それいいねー
Perlっぽくてナイス
198デフォルトの名無しさん:2008/12/24(水) 23:58:08
よくねーよ
型付けするだけで数百倍速くなるぞ
199デフォルトの名無しさん:2008/12/25(木) 00:11:56
>>198
まだ実装もされていない機能についてどうしてそんなことがいえるんだよ
200デフォルトの名無しさん:2008/12/25(木) 00:28:16
リフレクションで実装するって明言されてるから
201デフォルトの名無しさん:2008/12/25(木) 00:37:20
匿名型はIDynamicObject実装してdynamicのときはディクショナリとして振る舞うようにするとか
…まあ無いだろうな
202デフォルトの名無しさん:2008/12/25(木) 00:41:06
そんなことするくらいならメソッドの戻り値にvarを認めた方がマシだ
てか>>187で何か問題があるんか
203デフォルトの名無しさん:2008/12/25(木) 03:22:12
そんな素人じゃないんだから100倍遅くなるような設計するわけないだろう
常識的に考えて
204デフォルトの名無しさん:2008/12/25(木) 04:52:09
型自体を引数として関数に渡す方法ってあるか?
private void hoge(TYPE type)
{
 type v=new type();
}
みたいにコンストラクタを呼び出したいだけなんだが
205デフォルトの名無しさん:2008/12/25(木) 05:20:54
void Hoge<T>() where T : new()
{
T t = new T();

こんなんだっけ
206デフォルトの名無しさん:2008/12/25(木) 05:49:41
>>204
void Hoge(Type type)
{
 object o = Activator.CreateInstance(type);
}

T が既知なら>>205の方法で。
207デフォルトの名無しさん:2008/12/25(木) 06:10:15
whereとか初めて見た
どんな意味だ
208デフォルトの名無しさん:2008/12/25(木) 06:16:47
209デフォルトの名無しさん:2008/12/25(木) 06:36:29
>>208
へえこんなんあったのか
よくシリアライズ関係のクラスで引数無しのコンストラクタを
渡してコンパイルエラーになるのが謎すぎたんだけどこれのせいかよ
210デフォルトの名無しさん:2008/12/25(木) 07:10:49
それはまた別だと思うよ
211デフォルトの名無しさん:2008/12/25(木) 08:40:47
もうC#2.0でいいっていう気がしないでもない
ついてはいくけどさ
212デフォルトの名無しさん:2008/12/25(木) 08:46:27
C#2.0には戻れんわ・・バージョン上がる度に便利になりすぎ
213デフォルトの名無しさん:2008/12/25(木) 09:21:41
ラムダ式とLinqが便利すぎる
214デフォルトの名無しさん:2008/12/25(木) 09:31:38
>>211
食わず嫌い乙
215デフォルトの名無しさん:2008/12/25(木) 09:34:01
>>214

確かに3.5とかすげぇ便利でいいと思うんだよ・・・・
でもな・・・・でもな・・・・
現場にWin2000が現役ではびこってるからつかえねぇええええええええええええ!!!!!
あああああああ

まじめんどくせぇ・・・・
Linq使えば楽なのにとか思うところが多々あるから困る
216デフォルトの名無しさん:2008/12/25(木) 09:44:09
スタティックリンクとかできないんだっけ?
217デフォルトの名無しさん:2008/12/25(木) 11:29:05
System.Core.dllのローカルコピーを配れば動くかもしれないけどライセンス違反
MONOからパクってくれば
218デフォルトの名無しさん:2008/12/25(木) 15:15:29
え?そうなの?
なんでボーランドみたいにスタティックリンクライブラりないんだよ
219デフォルトの名無しさん:2008/12/25(木) 15:24:36
Silverlightではランタイムに含まれてるdllは最小限になってて
必要に応じてローカルコピーで配れということになってるな
220デフォルトの名無しさん:2008/12/25(木) 16:44:48
型に対応するMaxValue等を取得するのに

object getTypeMaxVal(Type type) {
if (type == typeof(byte)) retun byte.MaxValue;
if (type == typeof(short)) return short.MaxValue;
if (type == typeof(int)) return int.MaxValue;
//省略...
}

の様なメソッドで求めているのですが、もっと簡単な方法があれば、
ご教授願えれば有難いです。
221デフォルトの名無しさん:2008/12/25(木) 16:47:38
そのメソッドをどう使うか次第、かな
222デフォルトの名無しさん:2008/12/25(木) 16:48:14
○ご教示
×ご教授

日本語からやりなおそうな
223デフォルトの名無しさん:2008/12/25(木) 16:51:53
flexgGrid(グレープシティ)使っていて、グリッド編集時にエラーメッセージ
として最大値や最小値の範囲を表示したいのです。
それと、DELキーにより型に対応した初期値も設定したいのです。
224デフォルトの名無しさん:2008/12/25(木) 16:53:49
>>220
type.GetField("MaxValue").GetValue(null);
遅いので頻繁に必要なら結果はキャッシュしておいてね
225220:2008/12/25(木) 16:55:30
>>224
有難うございます。
226デフォルトの名無しさん:2008/12/25(木) 18:43:19
TypeCodeでテーブルにしといたら?
227デフォルトの名無しさん:2008/12/25(木) 18:46:29
テーブルにするにしろ,その値を取得する方法をそもそも聞いてるんでしょ
228デフォルトの名無しさん:2008/12/25(木) 18:50:54
if で分岐するのが速いと思う。測定してないけど。
229デフォルトの名無しさん:2008/12/25(木) 18:54:25
C#では文字列の連結が演算子のオーバーロード不要だと・・・
信じられん・・・
230デフォルトの名無しさん:2008/12/25(木) 19:00:04
文字列の+は逐次2つずつ連結するんじゃなくて最適化されるからな
231デフォルトの名無しさん:2008/12/25(木) 19:12:07
変数が無いメソッドはstaticにするのが通例なんですか?
232デフォルトの名無しさん:2008/12/25(木) 19:18:14
引数と他のstaticメンバのみに結果が依存するメソッドはstaticにする
「状態に依存しない」ってこと
233デフォルトの名無しさん:2008/12/25(木) 19:24:07
インスタンスを扱うのか、クラスを扱うのか
234デフォルトの名無しさん:2008/12/25(木) 19:37:28
>>222
「ご教授」でもいいんだよ。
2chの誤用厨(ちょうどお前さんのような)が騒いでるのとは違って。
こういう恥ずかしい馬鹿が最近多くて困るまったく。
235デフォルトの名無しさん:2008/12/25(木) 19:47:23
というかstaticって必要ですか?
意味が無いような気がするんですが
236デフォルトの名無しさん:2008/12/25(木) 19:52:00
インスタンスの意味がない場合に使うんだよ
たとえばMath.Sinはいつどこでどんな状況で使っても引数の値だけで結果が決まるんだから
インスタンスがあると逆に不自然
インスタンスっていうのは「状態」を表すんだよ
237デフォルトの名無しさん:2008/12/25(木) 19:55:16
>>235
Math.Max(x, y)を実行するためにMathのインスタンスが必要と思うか?
238デフォルトの名無しさん:2008/12/25(木) 20:04:59
>>234
「ご教授」は体系的に教えることを言う
下手クソな自己擁護乙
239デフォルトの名無しさん:2008/12/25(木) 20:05:59
>>238
それは2chの誤用厨が勝手に言ってるだけだよ。
違うってのならソースある?
いわゆる「一流」の辞書にそんなこと書いてないから。
240デフォルトの名無しさん:2008/12/25(木) 20:06:10
たかがネットでそこまで言葉の定義に厳密になる理由が無い。はい次
241デフォルトの名無しさん:2008/12/25(木) 20:06:48
では、必要の無いインスタンスがあると全体的なパフォーマンスが落ちるというイメージでいいのですか?
242デフォルトの名無しさん:2008/12/25(木) 20:09:17
>>241
パフォーマンスは関係ない。
意味的に変だからやらないだけ。
つーかその変のことはコード書いてる内に自然とわかってくるから
今は深く考えなくてもいいかもしれんよ。
243デフォルトの名無しさん:2008/12/25(木) 20:15:34
(new System.Math()).Sin(pi);
244デフォルトの名無しさん:2008/12/25(木) 20:18:34
staticについては現時点で80%ほど理解できたと思います
ありがとうございます

privateの意味が無いような気がするんですが、これはコーダーがケアレスミスしないようにするためのものなんですか?
245デフォルトの名無しさん:2008/12/25(木) 20:24:58
テレビ見るときにどうして映るのかいちいち意識してるか?
ブラウン管テレビだろうとプラズマハイビジョンテレビだろうと液晶テレビだろうと
リモコンのボタン押すだけだろ?
そういうことだ
246デフォルトの名無しさん:2008/12/25(木) 20:28:58
どういうことだよw
247デフォルトの名無しさん:2008/12/25(木) 20:29:03
つかそこまで初心者なら本一冊読め。いちいち全部聞くな。
248デフォルトの名無しさん:2008/12/25(木) 20:29:28
publicにして困るようなことが思い浮かばないんです
249デフォルトの名無しさん:2008/12/25(木) 20:37:32
>>248
それは「作る側」の視点に立ってるから。
使う側の視点に立てばおのずとわかる。

もしTVの裏にピンジャックが100個付いてたら、どれが映像入力端子で
どれが音声入力端子か見分けるだけでも一苦労するだろ。
外から見えるのは必要最小限の物だけでいいってこと。
250デフォルトの名無しさん:2008/12/25(木) 20:38:53
ここは答える側が初心者ってオチ?
251デフォルトの名無しさん:2008/12/25(木) 20:42:02
不要なものが見えちゃうと融通が利かなくなる
最小限のものだけが見えているからこそ
ブラウン管テレビもプラズマハイビジョンテレビも同じように扱える
なんでもかんでも中身が見えてて触れたら,マイナーチェンジでちょっとだけ仕組みを変えただけで
使ってた人から「せっかく操作方法覚えたのになんで変えるんだよ!」と文句言われることになる
252デフォルトの名無しさん:2008/12/25(木) 20:44:34
>>239
「一流」の辞書とやらの定義を出してごらんよゴミ君
253デフォルトの名無しさん:2008/12/25(木) 20:47:26
使う側のためにピンジャックにガム突っ込んどくわけですね!
254デフォルトの名無しさん:2008/12/25(木) 21:02:53
public void Xope(int x,bool i)
{
if (i)
{
A[x] = A[x] *A[x];
}
else
{
A[x] = A[x] * A[x] * A[x];
}

}

これやると、必ずA[x]*A[x]の方も実行されてしまうんですが・・・。
255デフォルトの名無しさん:2008/12/25(木) 21:06:35
されねえよ。
256デフォルトの名無しさん:2008/12/25(木) 21:08:34
そりゃiがtrueなんだろう
257デフォルトの名無しさん:2008/12/25(木) 21:09:24
bool で i とはいかがなものか
258デフォルトの名無しさん:2008/12/25(木) 21:42:17
{
textBox5.Text = i.ToString();
if(i)

確認したらfalseでも実行されてしまうんですが・・・
259デフォルトの名無しさん:2008/12/25(木) 21:43:21
ストップ実行しろ馬鹿
260デフォルトの名無しさん:2008/12/25(木) 21:43:37
tr/ト/テ/
261デフォルトの名無しさん:2008/12/25(木) 21:45:44
A[x]=2の時、
A[x]=A[x]*A[x]とは,A[x]=2*2=4ですよね?
A[x]=A[x]*A[x]*A[x]とは、A[x]=2*2*2=8ですよね?
これがA[x]=4*4*4=64となってるんです
262デフォルトの名無しさん:2008/12/25(木) 21:48:24
されねえっつってんだろ
プログラム全部上げろ
263デフォルトの名無しさん:2008/12/25(木) 21:52:19
bool = 1;
とか?
264デフォルトの名無しさん:2008/12/25(木) 21:55:55
private void button18_Click(object sender, EventArgs e)
{
NI_Frag = true;
Atype(Counts);
}

private void button19_Click(object sender, EventArgs e)
{
SAN_Frag = true;
Atype(Counts);
}
}
265デフォルトの名無しさん:2008/12/25(木) 21:57:02
public void Atype(int x)
{
Cal(x);
Dott(Dot);
A[x] = F[x] * Dott(Dot);

if (NI_Frag || SAN_Frag) //&&:論理積AND
{
Xope(Counts,NI_Frag);
}
}


public void Xope(int x,bool i)
{
textBox5.Text = i.ToString();

if (i)
{
A[x] = A[x] *A[x];
}
else
{
textBox6.Text = i.ToString();
A[x] = A[x] * A[x] * A[x];
}

}
266デフォルトの名無しさん:2008/12/25(木) 21:58:16
frag vt., n. 〔米俗〕【軍】破砕性手榴弾(で嫌な上官を暗殺する).
267デフォルトの名無しさん:2008/12/25(木) 22:05:33
コードの順番は265→264の順ですが・・・
268デフォルトの名無しさん:2008/12/25(木) 22:05:40
if (NI_Frag || SAN_Frag) //&&:論理積AND
269デフォルトの名無しさん:2008/12/25(木) 22:07:11
NI_Frag = false;
が見当たらんよ
270デフォルトの名無しさん:2008/12/25(木) 22:08:28
他のプログラム(たとえばメモ帳)にキーボード入力をさせるにはどうすればいいですか?

たとえばプログラムを起動したらメモ帳にabcと入力される
とかってふうにしたいんですが
271デフォルトの名無しさん:2008/12/25(木) 22:09:56
public void Clear() //入力情報消去
{
KETA = 0;
Dot = 0;

NI_Frag = false;
SAN_Frag = false;
D_Frag = false;

Counts++;

for (int j = 0; j < KETA; j++)
{
f[j] = 0;
}


}
272デフォルトの名無しさん:2008/12/25(木) 22:11:38
private void button14_Click(object sender, EventArgs e)
{
Frg = 1;
//textBox4.Text = "+";
if (SAN_Frag || NI_Frag == false)
{
Atype(Counts);
}
Clear();
}

必ずClear()は実行されてるんですが
273デフォルトの名無しさん:2008/12/25(木) 22:11:39
>>270
SendMessage
274デフォルトの名無しさん:2008/12/25(木) 22:21:20
>>273
ちょっと分かりません。
もう少し詳しく教えてくれませんか。
275デフォルトの名無しさん:2008/12/25(木) 22:24:37
276デフォルトの名無しさん:2008/12/25(木) 22:31:14
>>275
ありがとうございます。
メリークリスマス^^
277デフォルトの名無しさん:2008/12/25(木) 22:36:30
これはひどい
変数名で発狂しそう
278デフォルトの名無しさん:2008/12/25(木) 22:38:59
レスごとに分けられても誰も見ないが、気持ち悪いしどうでもいいか
279デフォルトの名無しさん:2008/12/25(木) 22:41:42
>>271
そのループ回らなくね?
280デフォルトの名無しさん:2008/12/25(木) 22:43:11
なんかいろいろダメだな
281デフォルトの名無しさん:2008/12/25(木) 22:44:05
LINQってそんなに便利なの?
282デフォルトの名無しさん:2008/12/25(木) 22:45:51
使う人には
283デフォルトの名無しさん:2008/12/25(木) 22:51:36
LINQなかったらSelectするのにListをNewしてAddとかしなきゃならんのだぜ
Whereもそうだぜ
考えられんよ
284デフォルトの名無しさん:2008/12/25(木) 22:52:42
>>279

一番外で宣言してるので何とか回っているようです・・・
285デフォルトの名無しさん:2008/12/25(木) 22:53:43
ありえない。C#は再宣言を禁止してる
286デフォルトの名無しさん:2008/12/25(木) 22:54:40
まずデバッガの使い方を覚えなよ
287デフォルトの名無しさん:2008/12/25(木) 22:56:21
もう一度考えて明日また連絡します。
288デフォルトの名無しさん:2008/12/25(木) 22:59:20
C#ってすごい便利な言語だなぁと思う
C++とかjavaとかイマイチ
289デフォルトの名無しさん:2008/12/25(木) 23:02:22
>>288
お前に整数型を使えなくする呪いをかけた・・・
解いてほしければC++の文字列連結の苦労を学んで来い・・・
290デフォルトの名無しさん:2008/12/25(木) 23:02:41
+ で連結できるじゃん?
291デフォルトの名無しさん:2008/12/25(木) 23:04:33
昔苦労したお
メモリまわりと文字列まわりがだるすぎる
292デフォルトの名無しさん:2008/12/25(木) 23:38:25
細かい検索条件を指定出来るページがあります。
そこから検索結果の画面に遷移し、検索結果以外に指定した条件を全て検索結果のページに表示したいのです。

そこでキャッシュを使って状態保持を行ったのですが、上司にリソース使うからあまり使うなと言われました。
キャッシュ以外に何かいい手段ありませんか?
293デフォルトの名無しさん:2008/12/25(木) 23:42:25
なんのことやらさっぱり。
ファイルにでも書き出せば?
294デフォルトの名無しさん:2008/12/26(金) 00:14:20
ページを挟んで状態を保持するのにはキャッシュ以外に有効な方法はありますか?ということです
295デフォルトの名無しさん:2008/12/26(金) 00:27:56
もしかして、ASP.NETの話か?
ならスレ違い。HTTPの勉強でもしとけ
296デフォルトの名無しさん:2008/12/26(金) 03:59:10
そんなところにキャッシュ使うアホがあるかよ
リソースとかのレベルの問題じゃねー
297デフォルトの名無しさん:2008/12/26(金) 04:54:26
自分以外に誰も見向きもしないようなDLLを作る意味はあるの?
298デフォルトの名無しさん:2008/12/26(金) 05:09:58
ASP.NETってなんですか?
どんだけ複雑なんですか・・・
299デフォルトの名無しさん:2008/12/26(金) 05:36:24
>>239
「一流」の辞書には誤用厨なんてことも書いてありませんが
300デフォルトの名無しさん:2008/12/26(金) 07:45:56
>>289
なんだその呪いw
301デフォルトの名無しさん:2008/12/26(金) 14:45:34
C#2.0で質問です。

呼び出し元 フォームA フォームBがあり
それぞれがフォームCを呼び出します。

このときフォームCはモードレスで開かれます。(ダイアログではない)

それで、フォームCを閉じるときにA,Bの全く違うフォームへ閉じたことを知らせたいのですがどうすればよいでしょうか?
コールバック的な感じで処理を行いたいのですが・・・

インターフェイスの実装でできそうですが、それ以外で何かあるでしょうか?

302デフォルトの名無しさん:2008/12/26(金) 14:57:32
Formのイベントと同じようにDelegateを用意して関数を設定しておけばいいような
303デフォルトの名無しさん:2008/12/26(金) 15:28:01
普通にCのFormClosedイベントでいいんじゃないのか
304デフォルトの名無しさん:2008/12/26(金) 15:42:45
>>302
でりげーと経由で呼び出すということでしょうか?
ちょっとその方法が思いつかないというかなんというか…
実力不足で申し訳ない

>>303
FormClosedかClosingあたりでA,Bそれぞれに伝えたいんです。
その実装方法ということなのですが・・・なにか読み違えてますか?
305デフォルトの名無しさん:2008/12/26(金) 15:44:28
WPFでウィンドウをふたつ開こうとしています。
Window1.xaml.cs
のなかで、
Window2.window2 window2 = new Window2.window2();
window2.Show();
としたところ、ウィンドウは表示されるのですが、
ウィンドウの中身が真っ白の豆腐になってしまいます。

開発画面では配置したオブジェクトは見えているし、
Window2だけを単独で開けば、きちんと内部が表示されます。
こんな症状につける薬をどなたかご教示いただけないでしょうか。
よろしくお願いします。
306デフォルトの名無しさん:2008/12/26(金) 15:44:45
AやBはその「全く違うフォーム」を知ってるんでしょ?
それならコールバック的な仕組みを使う意味はないよ
AやBが普通に「全く違うフォーム」に定義したメソッドを呼べばいい
307306:2008/12/26(金) 15:51:50
勘違いしてた
AやBが開いたCが閉じられるときにAやBからイベント発生
→Cが受け取ってAやBに定義したメソッドを呼び出す
みたいにすれば

>>305
Window2.window2って一体何なの
308デフォルトの名無しさん:2008/12/26(金) 15:53:29
ごめんなさい
>>307の"Cが受け取って"は"呼び出し元のフォームが受け取って"と読み替えてくれ
309デフォルトの名無しさん:2008/12/26(金) 15:58:07
>>307
やっぱ単純に適当なデリゲート作ってイベント発行して
そのイベントでそれぞれが駆動
ってやった方が簡単でわかりやすそうなのでそうやってみます。
310デフォルトの名無しさん:2008/12/26(金) 16:09:02
C#で私にお茶をいれるプログラムをつくりたんですが、
機械を動かすにはどうすればいいのでしょうか?
311デフォルトの名無しさん:2008/12/26(金) 16:11:26
Objective Jum
312デフォルトの名無しさん:2008/12/26(金) 16:22:38
>>310

LAN
または
232C
313デフォルトの名無しさん:2008/12/26(金) 16:29:28
>310
そうやっていつかは、攻殻機動隊よろしくアンドロイドが人間を支配するんだな。
314デフォルトの名無しさん:2008/12/26(金) 16:31:03
>>309
イベント作ってと言うけど,どうやってイベントを紐付けするつもり?
アがイを作って,イの変化をアが受け取りたいときに,
イがアの具体的な型を知らなくても済むようにするための仕組みがイベントであって,
イがアの具体的な型に依存するならイベントを使う意味はない
イにアのインスタンス渡してイがアのメソッド呼べば済むこと
そのへん理解してる?
315デフォルトの名無しさん:2008/12/26(金) 16:32:46
>>307
二つ目のウィンドウにつけた名前です。
<Window x:Class="Window2.window2"
Title="window2" Height="300" Width="450"
としてます。
316デフォルトの名無しさん:2008/12/26(金) 16:41:04
>>315
普通にやればできる
できないということは,君が出してきてない部分でなにかおかしいところがあるということ
まずなんでWindow2じゃなくてWindow2.window2クラスなの
317デフォルトの名無しさん:2008/12/26(金) 17:02:43
>>314
デリゲートという言葉を知っているならそれぐらいは知ってるだろ、常識的に考えて
それにイベントはコールバックができるのだが?
>イベント作ってと言うけど,どうやってイベントを紐付けするつもり?
+=演算子で
お前こそイベントを理解してないじゃないか
318デフォルトの名無しさん:2008/12/26(金) 17:09:04
>>314

まさにおっしゃる通りで

>アがイを作って,イの変化をアが受け取りたいときに,
>イがアの具体的な型を知らなくても済むようにするための仕組みがイベントであって,
これがしたかったのです。
恐らくこの場合これが最適な方法なのではないかと

PS
最初に考えていたのは結局呼び出し元のインターフェイスを意識する必要があるため
無駄な型の意識や実装が生まれるものでした。
319デフォルトの名無しさん:2008/12/26(金) 17:13:09
>>316
コメントありがとうございます。
おっしゃるとおりかなと思います。

まずなんでということですが、そこにアプリケーション名を入れていて、質問のために便宜的にWindow2としてみました。
320デフォルトの名無しさん:2008/12/26(金) 17:13:29
いやだからAが作ったCのイベントをどうやってBが受け取るのかが問題なんだろ
Cのインスタンスを管理するクラスを作ってそれぞれに渡すとかしないといけないと思うんだが
321デフォルトの名無しさん:2008/12/26(金) 17:22:01
ところで
1) Cを閉じたら、存在する全てのA,Bへ通知したい
2) Cを閉じたら、ただ一つの呼び出し元=親へ通知したい
どっちかで全然違う気がする。
悩んでるってことは1なんかな?
そうするとただインターフェースを使うってだけじゃなくて
親群を登録しておいて通知するためのクラスを使うとかみたいな仕組みが要るような
322デフォルトの名無しさん:2008/12/26(金) 17:40:19
後者は考えるまでも無いから前者だけ

A, Bに同一のCのインスタンスを渡せばいいだけだから、
A, BのコンストラクタかプロパティでCを受け取れるようにすればいい

こんな阿呆なことは考えてないだろうが、
もし、任意に生成したCのインスタンスからA, B両方に通知したいなら、
Cにstaticイベント作って、OnFormClosedから呼べばいい
323デフォルトの名無しさん:2008/12/26(金) 17:47:22
staticイベントは後片付けしないと確実にメモリリークするから一番避けるべきパターン
324デフォルトの名無しさん:2008/12/26(金) 18:14:37
C++で

newは後片付け(delete)しないと確実に(ry

とかいうのか、お前さんは
325デフォルトの名無しさん:2008/12/26(金) 18:22:20
また宗教戦争が始まりました
326デフォルトの名無しさん:2008/12/26(金) 18:30:15
staticイベントのメモリリークを避けるためにWPFにWeakEventパターンというのがあるくらいだぞ
327デフォルトの名無しさん:2008/12/26(金) 18:30:40
deleteしすぎるとぬるぽ
328デフォルトの名無しさん:2008/12/26(金) 19:11:16
SafeDeleteマクロ作ってたなぁw
329デフォルトの名無しさん:2008/12/26(金) 19:17:49
WPFウィンドウを開いたときに、別のウィンドウを開くには、
xamlのWindowセクションにどう書けばいいですか?
別のウィンドウのxamlファイル名はWindow2.xamlです。
330デフォルトの名無しさん:2008/12/26(金) 19:19:37
無理。かどうかは知らないけど普通はやらない。コード書く。
Window2のLoadedイベントあたりで開けばいい。
331デフォルトの名無しさん:2008/12/26(金) 19:21:59
>>330
間違えた
Window2ではなく元のウインドウのLoadedイベントで別のウインドウ(Window2)を開く
332デフォルトの名無しさん:2008/12/26(金) 19:43:10
.NETのクラスと自分で作ったクラスの見分けがつかなくて気持ち悪い
333デフォルトの名無しさん:2008/12/26(金) 20:48:48
隣の子と自分で作った子の見分けがつかなくて気持ち悪い
334デフォルトの名無しさん:2008/12/26(金) 21:03:20
>>330、331
Formと同様に、元のウィンドウのLoadedイベントに書くんですね。
その場合なんと書けばいいんでしょう?
ファイル名?
ウィンドウ名?
xamlのx:Class名?

Formなら、
Form2 openForm = new Form2();
openForm.ShowDialog();
でいいのですが。
335デフォルトの名無しさん:2008/12/26(金) 21:06:59
今、チェートを作成しているのですがメッセージボックスで表示される数字にかなりの誤差が
生まれてしまいます。これを出来るだけ近い数じにするにはどうしたら良いのでしょうか?。

decimal mag_x = chart_width / listView1.Items.Count;
MessageBox.Show((mag_x * listView1.Items.Count).ToString()+"=="+chart_width.ToString());
336335:2008/12/26(金) 21:12:33
(decimal)を入れたら上手く行きました。
337デフォルトの名無しさん:2008/12/26(金) 21:42:54
>>334
x:Class="Window2"なら,
Window2 window2 = new Window2();
window2.Show();
338デフォルトの名無しさん:2008/12/26(金) 22:47:20
>>337
thanks!

ひとつめのWPFウィンドウ
private void button1_Click(object sender, RoutedEventArgs e)
{
WpfApplication1.Page1 Page2 = new WpfApplication1.Page1();
Page2.Show();
}

ふたつめのWPFウィンドウ
<Page x:Class="WpfApplication1.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Page1" Height="300" Width="450" Name="Window2" Background="Transparent">
<Grid>
<Image Margin="0,0,0,0" Name="Image1" Stretch="None" Source="Image1.png" Opacity="100" SnapsToDevicePixels="True" Panel.ZIndex="1" />
<Image HorizontalAlignment="Right" Margin="0,12,38,112" Name="image2" Source="Image2.png" Stretch="Fill" Width="104" Panel.ZIndex="7"/>
<TextBox Background="Transparent" Height="23" Margin="113,95,195,0" Name="TextBox1" VerticalAlignment="Top" Panel.ZIndex="8" />
<TextBox Background="Transparent" Height="15" HorizontalAlignment="Right" Margin="0,103,65,0" Name="TextBox2" VerticalAlignment="Top" Width="51" Panel.ZIndex="10"/>
</Grid>
</Page>

としてます。
ところが、Page2.ShowでShowの定義がないといわれるうえに、ボタンを押しても、ふたつのめのウィンドウが空白になる、というのが現在の困っているところです。
どうぞ助言をお願いします。
339デフォルトの名無しさん:2008/12/26(金) 22:47:37
多倍長計算ってできますか?
340デフォルトの名無しさん:2008/12/26(金) 22:56:25
>>338
なんでウインドウを開きたいのにPageなんだ
プロジェクトに新しい項目を追加するときにウィンドウを選べ
>>339
標準では用意されてない
341デフォルトの名無しさん:2008/12/26(金) 23:00:47
BigInteger一度出ようかしたけど、保留されたんだよね。

CLR4.0には含まれる予定だけど、とりあえずこの辺使っといたら?
C# BigInteger Class - CodeProject
http://www.codeproject.com/KB/cs/biginteger.aspx
342デフォルトの名無しさん:2008/12/26(金) 23:03:18
.NetFrameworkとかいう本まったく意味がわかりません。
最後に読む本だということはわかりました。
最初に読む本を教えてください・・・・・
343デフォルトの名無しさん:2008/12/26(金) 23:17:11
サイタ サイタ サクラガ サイタ
344デフォルトの名無しさん:2008/12/26(金) 23:31:36
.NETプログラマには必読と言っていいような本だけど、初心者がいきなり読んでも意味が分からなくて当然。

・Visual C# の使い方と一緒に簡単なアプリケーションを作って学ぶなら
マイクロソフト公式解説書 ひと目でわかるMicrosoft Visual C#2008アプリケーション開発入門
http://ec.nikkeibp.co.jp/item/books/A01000.html

・C# だけでいいよって事なら「独習C# 第2版」が良いけど、NET Frameworkについては別にネットか書籍で覚える事になる。

プログラミング未経験(VisualStudioを使った事がない)なら、ひと目で〜を読んでから、独習C#で言語仕様を学ぶといいんじゃないかね。
345デフォルトの名無しさん:2008/12/27(土) 00:11:17
おれは「ひと目で〜」ちょっと立ち読みしてでたらめっぷりに吹いた記憶があるのだ…
346デフォルトの名無しさん:2008/12/27(土) 00:17:05
C#上下の1万以上のやつがお勧めだったらどうしようかと思ってました。
ひと目にしますありがとうございました。
347デフォルトの名無しさん:2008/12/27(土) 00:17:40
・・・・・・・・・・・・・・・
348デフォルトの名無しさん:2008/12/27(土) 00:27:46
>>340
そうですか
多倍長は自分で作るしかないのか・・・
349デフォルトの名無しさん:2008/12/27(土) 00:46:09
.NET 4.0で入るよ、多倍長整数。

ただ、出るのは2009年末から2010年初頭だけど。
350デフォルトの名無しさん:2008/12/27(土) 02:14:32
今後C#はシェア増えそうですか?
351デフォルトの名無しさん:2008/12/27(土) 02:34:47
今でもモリモリ増えてますよ(^^)
352デフォルトの名無しさん:2008/12/27(土) 02:39:56
javaとC#だったらどっちが有望?
353デフォルトの名無しさん:2008/12/27(土) 02:47:55
J#
354デフォルトの名無しさん:2008/12/27(土) 02:57:21
言語としてはC#の方がだいぶ有望
355デフォルトの名無しさん:2008/12/27(土) 02:58:56
Javaは停滞している
356デフォルトの名無しさん:2008/12/27(土) 03:19:05
ジャバマイロードってなんだったっけ?
思い出せないスペルが違うのかな
357デフォルトの名無しさん:2008/12/27(土) 08:22:00
java7で宣伝されてた拡張ってほとんどが没になりそうなんだっけ
358デフォルトの名無しさん:2008/12/27(土) 09:06:40
listview.view = Details の時に最後のアイテムを見える範囲に表示するように
したいのですが listview.items[listview.items.count-1].selected = trueでは
ならないようです。
どのようにしたら上手く行きますでしょうか?。
359デフォルトの名無しさん:2008/12/27(土) 09:18:03
Javaにもう将来性ないよ。
SUNがひどすぎる。

伸び盛りでMSの天下取れるかってときにWindowsにJava VM入れるなとか言って自爆して、
標準化して盛り上げていこうってときに「仕様をオープンにはしません」とか言って自爆して。

しかも今は、SUNが瀕死だし。
銀行系にSUNの機器多く納品してたからサブプライム問題直撃で。
360デフォルトの名無しさん:2008/12/27(土) 09:33:39
>>358
ListView.EnsureVisibleかListViewItem.EnsureVisible
Selectedいじる必要は特にない いじってもいいけど
361デフォルトの名無しさん:2008/12/27(土) 10:01:30
>>360
ありがとうございます。
アイテムの表示を確実にしたら良かったのですね。
362デフォルトの名無しさん:2008/12/27(土) 11:43:32
継承するクラスがデフォルトコンストラクタを確実に持つようにすることってできないですか?

abstract class A {}
class B : A {}

って感じで、リフレクションかActivator.CreateInstanceで確実にクラスBをインスタンス化してAとして使いたいんです
Bは実行時にならないと分からなくて、もしアホがBにデフォルトじゃないコンストラクタだけ書くと
Activator.CreateInstanceは失敗しますよね。。
363デフォルトの名無しさん:2008/12/27(土) 11:58:13
別に実行時エラーでいいんじゃない
ISerializableでもそうだし
364デフォルトの名無しさん:2008/12/27(土) 11:59:37
コンパイル時には無理だな
Aのコンストラクタで
if (this.GetType().GetConstructor(new Type[0]) == null) throw new Exception();
とかするくらいかな
「デフォルトコンストラクタを実装すること」くらいは継承する人に責任持たせていいと思うよ
365デフォルトの名無しさん:2008/12/27(土) 12:08:37
Visual Studio 2008 expressで質問です。

Buttonとかのコントロールを継承したクラスを作ると、
そのクラスのファイルがデザイナ付きと勘違いされてしまいます。
ソリューションエクスプローラでファイル名をダブルクリックすると
エディタではなく、デザイナが起動された上に
「コンポーネントが足りねえ!」みたいな文句を言ってきます。

そうじゃない!ただのクラスだ!

と、どこかで設定する方法はないでしょうか?
366デフォルトの名無しさん:2008/12/27(土) 12:40:24
>>365
発想が逆じゃないのか?

「どこかに正しく動作させるための設定がある」んじゃなくて、
「君が何かおかしなことをやっている」んだろ。

普通はそんなふうにならないから。

そのクラスをソリューションに追加する時に、「ユーザーコントロール」として追加しといて、
その時作成されるパーシャルクラスをほったらかしにしてるとかそんなオチじゃないのかな。
367デフォルトの名無しさん:2008/12/27(土) 12:46:27
>>366
普通にクラス作ってるよ。
いっぺん、ためしてみて。

ただのクラスに、
スーパークラスとしてButtonを追加するだけで、
ソリューションエクスプローラの動作が代わるから。
368デフォルトの名無しさん:2008/12/27(土) 12:48:51
ああ、そのことを言ってるのかw
だったらその

>「コンポーネントが足りねえ!」みたいな文句を言って
る画面に何か書いてあるでしょ?よく読んでみ。

あるいは、ソリューションエクスプローラで対象ファイルを右クリック
369デフォルトの名無しさん:2008/12/27(土) 13:02:41
>>368
いや、デザイナを起動したいわけじゃないんだ。
作っているのは、あくまで、完全手書きのクラスだから、
ソリューションエクスプローラでダブルクリックしたら、
今まで通りにエディタで開いてほしいんだ。

だけど、スーパークラスに、Buttonとかを指定するだけで、
ソリューションエクスプローラが勝手にに「デザイナありだ!」と
判断しちゃって、ダブルクリック時にデザイナを起動してしまう。
これをストップしたいのです。


370デフォルトの名無しさん:2008/12/27(土) 13:08:01
ソリューションエクスプローラでファイルを右クリックして
ファイルを開くアプリケーションの選択 を選んで
CSharpエディタ に変えれば?
他のも全部ダブルクリックするとコードが開くようになっちゃうけど,普通その方が便利でしょ
371デフォルトの名無しさん:2008/12/27(土) 13:11:18
>>370
ありがとう!
デザイナを使う方が圧倒的に少ないから、
この方が便利だ。
この設定で使っていくことにします。
372362:2008/12/27(土) 13:12:00
>>363
>>364
どうもありがとうございました。
例外投げることにします。
373デフォルトの名無しさん:2008/12/27(土) 15:21:05
>>362
Activatorじゃないとダメなのかな?

public static T CreateInstance<T>() where T : A, new()
{
  return new T();
}

これでA継承、デフォルトコンストラクタをコンパイル段階で検査できるけど。
374デフォルトの名無しさん:2008/12/27(土) 15:27:49
それも実はActivatorだったりする
それ呼び出すときにTの型は分かってるんだから
Bにデフォルトコンストラクタがあろうとなかろうと問題ないわけで
>>362みたいなことにはならない
375373:2008/12/27(土) 15:46:20
>継承するクラスがデフォルトコンストラクタを確実に持つようにすることってできないですか?
とりあえず、これに主眼を置いてみた。

>それも実はActivatorだったりする
これは初めて知った!勝手に
ジェネリクス>Activator
みたいな実行速度的ヒエラルキーを作っていたよ。勉強になったありがとう。
376デフォルトの名無しさん:2008/12/27(土) 19:38:54
>>340
アドバイス感謝します。
結局、どこに問題があるのかわからないのですが、プロジェクトをぜんぶ作り直しました。
コードじたいは、ほとんどそのままで動いたので、コードにミスがあったのか(その可能性もある)、それともそれ以外のファイル名などの整合性の問題なのか釈然とはしませんが、作り直すきっかけはウィンドウにするというところにありました。
作り直して、ファイル名などもきれいに修正できました。
ありがとうございました。
377デフォルトの名無しさん:2008/12/28(日) 00:20:46
>>239
一流の辞書マダー?
378デフォルトの名無しさん:2008/12/28(日) 00:45:17
>>375
ジェネリクス>Activatorなのはその通りだろ
ただコンストラクタはジェネリクスしようがないからActivatorになってるだけで
379デフォルトの名無しさん:2008/12/28(日) 00:48:57
>>371
[System.ComponentModel.DesignerCategory("")]
とかボタン継承したクラスにつけてみ
380デフォルトの名無しさん:2008/12/28(日) 01:16:56
>>374
>それ呼び出すときにTの型は分かってるんだから
>Bにデフォルトコンストラクタがあろうとなかろうと問題ないわけで
のこれが理解できないんだけどどういう意味?
373のコードはnewの制約してるじゃん。
381デフォルトの名無しさん:2008/12/28(日) 01:23:32
Bクラスを定義するだけならそのTに合致してなきゃならない理由がない
その制約はインスタンスを作る側にしか意味がない
382デフォルトの名無しさん:2008/12/28(日) 01:29:20
>>381
レスありがと。

ああAの派生クラス(を書く人)にデフォルトコンストラクタを強制する
仕組みにはなってないってことを>>374は言いたかった訳ねなるほど。
383デフォルトの名無しさん:2008/12/28(日) 01:30:49
そう、そのメソッド呼ばないとチェックにならんのよ。
しかも静的にその対象クラス(派生クラス)を参照しないとできないのよ。
意味ないでしょ?
384デフォルトの名無しさん:2008/12/28(日) 01:40:33
>>379
おお!これぞ、パーフェクトな解決法です。
ありがとう!!
385デフォルトの名無しさん:2008/12/28(日) 01:42:07
//TSelfには自分自身を設定すること
class A<TSelf> where TSelf : A, new() {}

class B : A<B>{}

まあこんな感じになるんじゃないか
386デフォルトの名無しさん:2008/12/28(日) 01:47:28
ちゃうわ

//TSelfには自分自身を設定すること
class A<TSelf> where TSelf : A<TSelf>, new() {}

class B : A<B>{}

こうか
387デフォルトの名無しさん:2008/12/28(日) 01:49:56
それさ、基底クラスがひとつにならないから多分駄目だろ
388デフォルトの名無しさん:2008/12/28(日) 01:56:08
>>387
何言ってるかよく分からんが基底クラスは一つだぞ
ただTSelfに自分自身を設定することを強制する方法にはなってないな
389デフォルトの名無しさん:2008/12/28(日) 02:08:53
基底クラスの実体がA<B>とかA<B2>とかばらばらになるってこと。
多分目的に合わないと思うんだけど。
さらにジェネリックじゃない基底を作ることはできるけど
そうするとそっち継承することもできちゃうので結局意味ないし。

あれ?なんかデジャヴ…
390デフォルトの名無しさん:2008/12/28(日) 02:08:58
class A {}
class C<TSelf> : A where TSelf : C<TSelf>, new() {}
こうだな
C<TSelf>の基底にAがいないと扱いに困る
391デフォルトの名無しさん:2008/12/28(日) 02:14:32
まあ実用上はそうなるな
ジェネリクスの共変反変がサポートされればそのままかけるんだけども
392デフォルトの名無しさん:2008/12/28(日) 02:15:34
>>389
> さらにジェネリックじゃない基底を作ることはできるけど
> そうするとそっち継承することもできちゃうので結局意味ないし。

class A {
    internal A() {
    }
}
class C<TSelf> : A where TSelf : C<TSelf>, new() {
    protected C() {
    }
}
で外部アセンブリでのAからの直接派生を禁止できたりする
393デフォルトの名無しさん:2008/12/28(日) 02:17:39
いやそれでいいのか?
まあ自アセンブリ内からしかAを使わん前提ならいいけど。
394デフォルトの名無しさん:2008/12/28(日) 02:22:24
本人無しで話進めすぎだろw
395デフォルトの名無しさん:2008/12/28(日) 02:24:14
へいへい>>362お呼びだぜ
396デフォルトの名無しさん:2008/12/28(日) 02:35:34
基底は別にinterfaceでもよくないか?

interface IA{}

class A<TSelf> : IA where TSelf : A<TSelf>, new(){}
397デフォルトの名無しさん:2008/12/28(日) 06:51:53
>>392
そもそも、Cから派生できるので意味がない

class C<TSelf> where TSelf : C<TSelf>, new() { }

class C1 : C<C1> { }
class C2 : C<C1> { C2(){} } // C2 は new() 制約を満たしていないがエラーにならない
398デフォルトの名無しさん:2008/12/28(日) 07:18:13
お前ら馬鹿だな。
A の派生クラスがデフォルトコンストラクタを持たないときに
コンパイルエラーになるようなコンパイラを作ればいいんだよ。
399デフォルトの名無しさん:2008/12/28(日) 07:29:41
ここはC#スレですので独自言語の話はご遠慮願います
400362:2008/12/28(日) 08:59:04
ども。
Aはプラグインがもつ属性クラスに渡すローカライズ情報源のひな型にするつもりだったんです。
属性が持ってる文字列をローカライズ可能にしたいなって思ったことから始まりました。
(なんか初心者なんで手当たり次第にやってますけど、こんなんでいいのかなんて思いますが。)

------------
// プラグイン作者のコード
[HogeAttribute( typeof( B ) )]
public class HagePlugin : INantoka {...}

class B : A
{
 public override string Author{ get{...} }
 public override string Description{ get{...} }
 ...
}
------------

実行時にというかAssemblyをロードして型からAttributeを取得したたときに、
Bから実行環境のCultreにあった文字情報を持ってこさせる予定だったんで、
Bがデフォルトコンストラクタをもってないときは「作者名 : バーカバーカ」と表示することを検討中です
401デフォルトの名無しさん:2008/12/28(日) 09:45:01
Form上でキーが押されたときはイベントで処理できるとして、Form以外の場所でキーが押されたことを感知するにはどうすればいいですか?
402デフォルトの名無しさん:2008/12/28(日) 09:49:58
>>401
フック
403デフォルトの名無しさん:2008/12/28(日) 10:23:00
>>400
ローカライズはフレームワークに組み込まれてる仕組みがあるからそれ使え
http://msdn.microsoft.com/ja-jp/library/z68135h5(VS.80).aspx
404デフォルトの名無しさん:2008/12/28(日) 15:33:55
ASP.NETってなんですか?
405デフォルトの名無しさん:2008/12/28(日) 15:40:33
>>404
ググレ
406デフォルトの名無しさん:2008/12/28(日) 15:50:36
デザイナで10個のpanel0〜panel9を置いて、配列hyouji[10]の要素が1か0かで
それぞれを表示・非表示したいと思ってます。
1個ずつなら
if (hyouji[0] == 1){
panel0.visible = True;
}
でできるのですが、for文を使ってpanel0〜panel9を表現する方法が分かりません。
よろしくお願いします。
407デフォルトの名無しさん:2008/12/28(日) 16:03:06
Panelの配列も作っとく
408デフォルトの名無しさん:2008/12/28(日) 16:10:20
>>406
そもそも本当にhyoujiなんて配列が必要かどうか、冷静に再考した方がいいんじゃないのか。
409デフォルトの名無しさん:2008/12/28(日) 16:24:36
>>407
うっ、検索するとそれらしいことも書いてあったのですが、デザイナで作った物を配列に
する方法が分かりませんでした。
強引に
for (i = 0; i<10; i++){
if (hyouji[i] == 1){
****.visible = True;
}
}
の****部分を文字列変数とかにしてできないかなと思ったのですが、うまく行きませんでした。
やっぱり、無理でしょうか。

あと、デザイナで作ってからあとで配列にするというのはどうすればいいでしょう?

>>408
ユーザーが画面構成を設定できるようにしたいのですが、その設定情報を配列にして
記憶させようとしています。プログラムを短くしたいと言うのも有りますが、、、
410デフォルトの名無しさん:2008/12/28(日) 16:39:55
411406:2008/12/28(日) 16:51:46
>>410
これの後半の
「すでに配置されているコントロールをリフレクションで検索する」
でできるのかな。
でも、私にはちょっと難しいかも。頑張ってみます。
皆さん、有難うございました。
412デフォルトの名無しさん:2008/12/28(日) 16:55:36
ちげえええええ

2番目の
>上記の例では、Visual Studioのフォームのデザインが使えないという欠点があります。
>次にフォームのデザインでフォームにボタンコントロールが5つ(Button1〜5)追加されており、それらを配列として扱う例を示します。
見れ。
新しく配列作って、デザイナで作った奴を代入するだけだ。
簡単だろ。
413デフォルトの名無しさん:2008/12/28(日) 17:04:50
Dictionary<Panel,bool> dic = new Dictionary<Panel,bool>()
{
  { panel0, true },
  { panel1, true },
  { panel2, true },
   :
};

foreach (KeyValuePair<Panel,bool> item in dic)
{
  item.Key.Visible = item.Value;
}

遅レスですが、こんなんで。
414406:2008/12/28(日) 17:20:40
>>412
あ、代入するだけなのね。分かりました。

>>413
何となく分かりました。
重ねて、どうもです。(みんな優しい。つД`))
415デフォルトの名無しさん:2008/12/28(日) 18:05:32
つーか、普通に動的に配置するんじゃ何が不満なの
416デフォルトの名無しさん:2008/12/28(日) 19:24:40
複数個あるメニューアイテムをラジオボタンのように常に一つだけがチェックされている状態にするにはどうするのがいいのでしょうか?
スマートな方法が思いつきませんでした
417デフォルトの名無しさん:2008/12/28(日) 19:41:44
>>416
そんな悩む問題か?

・一つ前の「チェックされたメニューアイテム」が特定できる場合は、そいつのチェックをクリア
・そうでない場合はそのグループに属する全部のメニューアイテムのチェックをクリア

してからクリックされたのをチェックするだけだと思うんだけど
418デフォルトの名無しさん:2008/12/28(日) 19:45:54
>>416
MSDNのMenuItem.RadioCheckのところにサンプルコードある。
419デフォルトの名無しさん:2008/12/28(日) 19:55:06
>>418
コード見てワラタ
420デフォルトの名無しさん:2008/12/28(日) 19:56:30
>>417
高級言語だと自分で考えた方法がなんでも泥臭いと思ってしまいます

>>418
デザイナに表示されないプロパティであったんですか
調べてみます

ありがとうございました
421デフォルトの名無しさん:2008/12/28(日) 19:58:37
  ( ^ω^) …
  (⊃⊂)


  (^ω^ )⊃ アウアウ!!
 ⊂ミ⊃ )
  /   ヽ
422デフォルトの名無しさん:2008/12/28(日) 20:00:25
コピペ君って馬鹿だな、まで読んだ。
423デフォルトの名無しさん:2008/12/28(日) 20:09:43
>>420
>高級言語だと自分で考えた方法がなんでも泥臭いと思ってしまいます

言語とライブラリを区別しような
424デフォルトの名無しさん:2008/12/28(日) 20:11:05
MenuItemはMainMenuのアイテム。
MenuStrapのだとここにサンプルあるよ。
http://msdn.microsoft.com/ja-jp/library/ms404318.aspx

更に泥臭くなってるけどなw
425デフォルトの名無しさん:2008/12/28(日) 20:17:17
*MenuStrip
426デフォルトの名無しさん:2008/12/28(日) 21:30:29
Drag&Dropでコピー中のファイルにアクセスするにはどうすればいいんだろう?
FileStreamでFileAccess.ReadとFileShare.ReadWriteに設定しても
例外が発生してしまう・・・
そもそもDrag&Drop中のファイルのアクセスは無理なのかな?
427デフォルトの名無しさん:2008/12/28(日) 21:55:34
お馬鹿な確認だけど、アクセスするファイルはコピー元だよね?
428デフォルトの名無しさん:2008/12/28(日) 21:57:59
コピーではなく移動中なのではないかと
429デフォルトの名無しさん:2008/12/28(日) 22:04:47
>427, 428
レスThanks.

あれ?コピー元って質問がくるってことはコピー先は当然、アクセスは
不可能ってこと?
1GB程度のファイルを、D&DかCtrl+Vであるフォルダにコピー(もしくは移動)する
ことを考えてる。そのファイルをコピー中でもアクセスしたい。
無理なのかな・・・?
430426:2008/12/28(日) 22:06:15
連投すいません。

コピー先のファイルにアクセスです。
431デフォルトの名無しさん:2008/12/28(日) 22:13:33
コピー先は、コピーが完了するまで(ファイルシステム的には)存在しないのだから
むしろ当たり前じゃないんだろうか。
432デフォルトの名無しさん:2008/12/28(日) 22:34:53
え??
433426:2008/12/28(日) 22:42:14
>>431
> コピー先は、コピーが完了するまで(ファイルシステム的には)存在しないのだから
> むしろ当たり前じゃないんだろうか。

Explorer上ではファイルアイコンが見えているから一応ファイルシステムには
登録されたものと思っていたよ。違うのかな。
そもそも、今回のようなことを行う場合、皆さんはどうやって
実現しているのだろう。
434デフォルトの名無しさん:2008/12/28(日) 22:42:25
>あれ?コピー元って質問がくるってことはコピー先は当然、アクセスは不可能ってこと?

これはひどい
435デフォルトの名無しさん:2008/12/28(日) 22:48:50
できるかできないかは解らないけど、物理的に考えて書き込みが終わってない所に
アクセスしたら例外は起こると思う。D&Dはとりあえず置いといて
普通にファイルコピーをしつつコピー先のデータにアクセスできるか試してみては?

できないのであれば、自前でコピー処理を書いて(一定量メモリに読んで別ファイルに出力)
メモリ上に読んだデータを利用するのが楽かと。ランダムアクセスでなければ。
436デフォルトの名無しさん:2008/12/28(日) 22:49:52
ファイルコピーの実装次第じゃね?
437デフォルトの名無しさん:2008/12/28(日) 23:02:26
みんなありがとう。不適切な質問の仕方をしていたならごめんでした。
とりあえず、435さんのいうように、D&Dコピーに固執せず
まずは色々やってみます。
438デフォルトの名無しさん:2008/12/29(月) 00:01:26
エクスプローラのコピーの動作では書き込み完了するまで排他ロックしてるんだろう。
439デフォルトの名無しさん:2008/12/29(月) 02:11:07
ファーム間のデータのやり取りをグローバル変数で行う
というのはC#では邪道ですか?

↓のほうが王道なんでしょうか?
ttp://dobon.net/vb/dotnet/form/accessanotherformdata.html#section2
440デフォルトの名無しさん:2008/12/29(月) 02:27:17
C#にグローバル変数は存在しなひ
441デフォルトの名無しさん:2008/12/29(月) 02:39:43
>>440
staticなpublic変数 に置換してください
442デフォルトの名無しさん:2008/12/29(月) 02:54:35
>>440
なんで「ひ」なの?
443デフォルトの名無しさん:2008/12/29(月) 03:23:56
>>439
多分王道だよ。MSDNでもこんな感じだった。

class Form1 : Form
{
  private static Form1 _form1Instance = new Form1();
  public static Form1 Form1Instance { get { return Form1._form1Instance; } }
  
  private Form1(){}
}

こうしておけばForm1を他で勝手に作られないし、nullを代入されることもないよ。
444デフォルトの名無しさん:2008/12/29(月) 04:17:39
>>443
せっかく解答していただいているのに説明不足で済みません

staticなpublic変数をtext1としています

それでForm1からForm2をモーダルで表示するんですが
Form2で設定した値をDialogResultで取得するときに
text1でやり取りするというのは邪道でしょうか?

static class data
{
static public string text1;
}

public Form1 {
Form2 _Form2 = new Form2();
_Form2.ShowDialog( );

if ( _Form2.DialogResult == DialogResult.OK )
Form1.txtbox.Text = text1;
}

// Form2 //
private void btnOK_Click( object sender, EventArgs e )
{
text1 = txtID.Text;
Form2.Close( );
Form2.Dispose( );
}

説明が下手くそで分かり難いと思いますがよろしくお願いします
445デフォルトの名無しさん:2008/12/29(月) 04:48:07
趣味で書いたソースで人に見せるものじゃないなら、別にいいんじゃないか
446デフォルトの名無しさん:2008/12/29(月) 08:22:37
お前が王道を行くなら俺は覇道を行く
447デフォルトの名無しさん:2008/12/29(月) 09:37:26
王道
安易な方法。近道。「学問に―無し」
448デフォルトの名無しさん:2008/12/29(月) 10:01:12
邪道とか気にするならやるな。
邪道だとわかっててやるなら構わない。
449デフォルトの名無しさん:2008/12/29(月) 10:10:05
自分もForm間のデータの取り扱いをどうすればいいか知りたいです
前に質問したときは親切な人がプロパティのクラスを作って
PropertyChangedを使ってバインドすればいいって教えてくれたけど
プロパティの数が多いときなんかはどうも・・・
450デフォルトの名無しさん:2008/12/29(月) 10:23:11
ものにもよるけど、MVCとか。
451デフォルトの名無しさん:2008/12/29(月) 11:13:43
textbox.Textプロパティをpublicにしちゃう
452デフォルトの名無しさん:2008/12/29(月) 11:16:57
Textプロパティだけをパブリックにする方法ってあるんですか?
コントロールをパブリックにしてしまうとVB厨と言われて煽られるような気がします
453デフォルトの名無しさん:2008/12/29(月) 11:18:40
うん
煽るよ
454デフォルトの名無しさん:2008/12/29(月) 11:21:32
簡単にリバースできる言語で細かい事を気にする必要があるのだろうか?
455デフォルトの名無しさん:2008/12/29(月) 11:24:18
年末年始だからって酒の飲みすぎだよ
456デフォルトの名無しさん:2008/12/29(月) 11:37:41
リバースはトイレでね
457デフォルトの名無しさん:2008/12/29(月) 13:08:11
ド初心者ですが、コントロールをパブリックにするのはいけないのですか?
いけないにしても、textboxのtextプロパティを他のフォームで知るにはこれが一番簡単ですよね?
て言うか、これしか知らないorz
458デフォルトの名無しさん:2008/12/29(月) 13:24:13
入門書を読んでからにしたほうがいい
459デフォルトの名無しさん:2008/12/29(月) 14:37:33
privateなコントロールってあるのか?
460デフォルトの名無しさん:2008/12/29(月) 14:57:13
Control型のフィールドをパブリックにするって話だろ
当然プライベートにもできる
461デフォルトの名無しさん:2008/12/29(月) 15:53:08
>>457
コントロールに限らず、公開範囲はケースバイケースだと思うよ。

・メリット
 プロパティの分、コードを書かなくて済む

・デメリット
 バグが発生した時、調べる範囲が格段に広くなる。
 変更する時、どこで使われている箇所を調べる範囲が格段に広くなる。
 特にpublicだと外部から使用される事を容認しているので最新の注意が必要。
 そのクラスを使う側にしてみたら、公開されているので自由に使って良い、
 と判断される。

メリット、デメリットが解っているならpublicもありと思うよ。
ただ、publicを安易に進めるベテランは居ないと思う。
仮にいるなら俺はその人を疑う。
462デフォルトの名無しさん:2008/12/29(月) 16:16:16
>>444
これじゃいけないのかな?

public class Form1 : Form
{
  private TextBox textbox = new TextBox();

  // まぁ名前は適当で。
  public void SetTextBoxString()
  {
    Form2 _Form2 = new Form2();
    if ( _Form2.ShowDialog( ) == DialogResult.OK )
    {
      this.textbox.Text = _Form2.ResultText;
    }
  }
}


public class Form2 : Form
{
  public string ResultText { get; set; }

  private void btnOK_Click( object sender, EventArgs e )
  {
    this.ResultText = txtID.Text;
    Form2.Close( );
    Form2.Dispose( );
  }
}

463デフォルトの名無しさん:2008/12/29(月) 16:37:48
Dispose 済みじゃね?
464462:2008/12/29(月) 16:52:54
>>463
おっぷ!
465462:2008/12/29(月) 17:41:55
public class Form1 : Form
{
  private TextBox textbox = new TextBox();

  // まぁ名前は適当で。
  public void SetTextBoxString()
  {
    Form2 _Form2 = new Form2();
    _Form2.CallDialog( delegate( string resultText )
    {
      this.textbox.Text = resultText;
    });
  }
}
466462:2008/12/29(月) 17:42:40
続き。

public class Form2 : Form
{
  private Action<string> OnOkFunc = null;

  public void CallDialog( Action<string> Func )
  {
    this.OnOkFunc = Func;
    this.ShowDialog();
  }

  private void btnOK_Click( object sender, EventArgs e )
  {
    if ( this.OnOkFunc != null )
    {
      this.OnOkFunc( txtID.Text );
      this.OnOkFunc = null;
    }
    this.Close( );
    this.Dispose( );
  }
}

‥自分でもムキになりやすいタイプだと思う。
467デフォルトの名無しさん:2008/12/29(月) 18:04:00
コマンドラインランチャー作ってるんだけど
パス先のファイル(アプリケーション)を開く関数ってない?

〇〇〇{@"c:\Program Files\Jane Style\jane2ch.exe");

こんな感じで
468デフォルトの名無しさん:2008/12/29(月) 18:09:29
C#的に関数と言うとP/Invokeで使うもの
System.Diagnostics名前空間のProcessクラス
469デフォルトの名無しさん:2008/12/29(月) 18:13:57
C#的には高階関数の引数に渡すデリゲートも関数と呼ぶらしいよ
470467:2008/12/29(月) 18:30:24
thx こんな感じかな
Process.Start(@"c:\Program Files\Jane Style\jane2ch.exe");

あともう一つ
quoted stringをString型変数に適用したいときは

ex)
String i = "c:\\Program Files\\Jane Style\\jane2ch.exe";
textBox1.Text = @i;

こんな風にできる?
471デフォルトの名無しさん:2008/12/29(月) 18:31:55
> quoted stringをString型変数に適用したいときは
冷静に考えろ
472デフォルトの名無しさん:2008/12/29(月) 18:42:02
String s1 = "c:\\Program Files\\Jane Style\\jane2ch.exe";
String s2 = @"c:\Program Files\Jane Style\jane2ch.exe";

if(s1!=s2)
{
MessageBox.Show("工エエェェ(´д`)ェェエエ工");
}
473デフォルトの名無しさん:2008/12/29(月) 18:44:00
いかん ちょっと首吊ってくるwww
474デフォルトの名無しさん:2008/12/29(月) 19:13:06
左にリストボックスかツリービューがあって選択すると右のコントロールのレイアウトが変わるタイプの
設定ダイアログをGUIエディタで作りたいんですがどういう風にやるのが一般的ですかね?
475デフォルトの名無しさん:2008/12/29(月) 19:22:22
ユーザーコントロールかな
476デフォルトの名無しさん:2008/12/29(月) 21:14:31
ありがと、それで作ってみる
477デフォルトの名無しさん:2008/12/29(月) 21:16:43
右にPanelを同じ位置に置いといて
左の選択で該当PanelをBringToFrontしてもできるな
478デフォルトの名無しさん:2008/12/29(月) 21:44:28
ツリービューで選ばせるくらいなのにそんな拡張性のない方法はちょっと…
479デフォルトの名無しさん:2008/12/29(月) 21:52:41
で、コントロールのアクセスをパブリックにしない場合はどういう方法がいいの?
480デフォルトの名無しさん:2008/12/29(月) 21:54:21
ユーザーコントロールに適切なプロパティを定義すればいいだけだろ
481デフォルトの名無しさん:2008/12/29(月) 22:00:54
質問です。

private struct MyPoint
{
int X;
}

List<MyPoint> P = new List<MyPoint>(100);

等として構造体(もしくはクラス)の配列Pを作成したときに、
そのメンバXを配列として簡単に取り出す方法はありますでしょうか?
(P[].Xではなくてint型の配列X[]を取り出したい)

for文で回せば可能なことは分かるのですが、実際には
構造体(クラス)のメンバがかなり多く、配列の要素数も大きいため、
毎回そうするのは非効率な気がして・・・

申し訳ありませんが、よろしくお願いします。
482デフォルトの名無しさん:2008/12/29(月) 22:01:42
ちょっとスレチなんだけど、昔「VisualC++はVisualC++で作られています」
っていうメッセージがあったんだけど、あれどういう意味?
開発途中のVC++でVC++のシステムを組んだの?
あれ意味が分からなくて頭痛かった
483デフォルトの名無しさん:2008/12/29(月) 22:08:02
>>481
forで回すのが一番実行効率の良い方法
実行効率は若干落ちるけどコーディング効率の良い方法としては
int[] X = P.Select(p => p.X).ToArray();
484デフォルトの名無しさん:2008/12/29(月) 22:10:55
>>481
言ってる意味がわかりません。
存在しない、欲しい、でも作りたくない?
作られずに存在するのは神だけじゃないのか?
485デフォルトの名無しさん:2008/12/29(月) 22:22:14
>>483
回答ありがとうございます。
とりあえずforで回す方法で実装してみます。
配列の要素数が可変かつ10000以上になるのでちょっと心配ですが・・・
486デフォルトの名無しさん:2008/12/29(月) 22:23:06
>>481
class MyPointXList //: IList<int>
{
  private List<MyPoint> innerList;
  //中略
  public int this[int index]{get{return innerList[index].X;}}
}
487481:2008/12/29(月) 22:25:37
>>484
分かり辛くてすいません。483さんの
int[] X = P.Select(p => p.X).ToArray();
のような書き方を探していました。
残念ながら実行効率の面で不利みたいですが。。
488デフォルトの名無しさん:2008/12/29(月) 22:27:14
Cで書いたらよかんべ
489デフォルトの名無しさん:2008/12/29(月) 22:56:18
つうかコーディングのシンプルさとパフォーマンスとどっちを重視してんのよ?
まあパフォーマンスったってコピーは避けられんが(コレクションのラッパーではだめな場合)
490デフォルトの名無しさん:2008/12/29(月) 23:00:14
最速を求めるなら,
Emit系APIでList<T>._itemsを直接取得するメソッドを生成
それを使って取得した配列の要素にポインタでアクセス
かな
491481:2008/12/29(月) 23:02:22
>>486
回答ありがとうございます。
おそらく私がやりたいことそのものズバリだと思うのですが、
勉強不足で意味が理解できません・・・
IList・・・インターフェイス?抽象クラス?
ちょっと詳しく調べてみます。ありがとうございました。
492デフォルトの名無しさん:2008/12/29(月) 23:03:37
ほんとかよww
493デフォルトの名無しさん:2008/12/29(月) 23:05:01
最適化されるから、あんまり変なことしないほうがいい
494デフォルトの名無しさん:2008/12/29(月) 23:06:46
List<T>だから配列のようには最適化されないよ
インデクサの呼び出しが入るしコピーもされる
可能なら配列で持つようにした方が速い
495デフォルトの名無しさん:2008/12/29(月) 23:09:20
>>491
おいおい
んじゃ別に配列じゃなくてもラッパーでよかったってことかな?
496481:2008/12/29(月) 23:40:31
Emit系API・・?ラッパー・・?分からなさすぎて泣けてきたorz....
簡単に調べただけだと何のことだかサッパリ。
とりあえず、やりたかったことは↓のような感じです。
色々教えて頂いたのに理解できなくてすいません。勉強して出直します。

class MyClass { int X; int Y; int Z ... } //こんなクラスがあって
List<MyClass> P = new List<MyClass>(); //newして
P.add(); P.add(); P.add();… //動的に要素が追加されて
Method(X[]); //1秒おきに別のメソッドにint型の配列X[]を渡して
P.add(); P.add();… //動的に要素が追加されて
Method(Y[]); //2秒おきに別のメソッドにint型の配列Y[]を渡して
P.add(); P.add();… //動的に要素が追加されて(以下繰り返し)
497デフォルトの名無しさん:2008/12/30(火) 00:05:41
>>496
1秒おきとか何のこっちゃ
498デフォルトの名無しさん:2008/12/30(火) 00:11:55
>>490は冗談だから忘れてくれ
ラッパーでできそうな気はするけど>>481の意味がわからないレベルならまだ気にしなくていいと思う
そんなに非常識な大きさでなければ1秒おきなら毎回配列にコピーしても大丈夫だろ
499デフォルトの名無しさん:2008/12/30(火) 00:32:18
1秒以上かかったらまずいということでは……
500デフォルトの名無しさん:2008/12/30(火) 01:47:22
演算処理した大量のデータ(txtファイルで数MBくらい)をtxtファイルにWriteLine();で書き込むプログラムを作っているのですが
本来書き込まれているべきの最後の数行分が何故か書き込まれていません。
データの途中で切れている感じです(7.550とかが7.5だけ出てくるみたいな)

どなたか何故このような現象が起きるのかご存知ないでしょうか。VC#2008EEです
501デフォルトの名無しさん:2008/12/30(火) 01:54:36
それだけでわかるわけねーだろこのタコ。もっと詳しく(ry

・・・って言いたいところだがそれ Close し忘れの典型的症状。
FileStream は using してるか?
502デフォルトの名無しさん:2008/12/30(火) 02:31:23
>>496
X, Y, Z, …の関係性がいまいち分からんが、

1. 複数のデータ項目X, Y, Z, …(このtupleをMyClassと定義)があって、
2. 追加はtupleで同期的に(i.e. MyClass単位)行うが、
3. 利用は項目ごとに個別のデータ群として扱う

ということか。であれば、最初からデータを項目ごとに分けて保持して置けばいいんじゃないか

class MyClasses : IList<MyClass> {
  private List<int> _X = new List<int>();
     :

  public MyClass this[int index] {
    get { return new MyClass(_X[index], …); }
    set { … } // NotSupportedException 投げるのも可
  }

  public void Add(MyClass data) {
    _X.Add(data.X);
      :
  }

  // IList<T> の残りも実装

  public IList<int> X { get { return _X.AsReadOnly(); } } // 必要に応じて下記を利用
  // public int[] X { get { return _X.ToArray(); } }
}
503デフォルトの名無しさん:2008/12/30(火) 02:46:09
>>501
仰る通り、StreamWriterのCloseがされてないみたいでした!ありがとうございました!
Closeしないと何で数行だけ書き込みがバグるのか不思議です
504デフォルトの名無しさん:2008/12/30(火) 03:24:34
>503
Closeよりも問題なのはFlushだよ。
内部でバッファがあってキャッシュされてるのでその分がFlushが呼ばれないと書き込まれない。
CloseするとFlushされてから閉じられるので書き込まれる。
とりあえずusingにしておけ。
505デフォルトの名無しさん:2008/12/30(火) 20:24:48
C#で初期化式を複数書きたいときは、どうすればいいのでしょうか?

for( int a = 0, double d = 0; a < 10; a++ )
こんな感じのを書きたい。
でも、エラーになる。

for( int a = 0, b = 10; a < 10; a++ )
両方intなら、これで文句を言われないのですが。
506デフォルトの名無しさん:2008/12/30(火) 20:37:00
できないとおもう
両方intでも普通そんなことしないよね
おとなしくループの外でやりましょう
507デフォルトの名無しさん:2008/12/30(火) 20:47:35
文法上forのfor-initalizerにはtypeを一回書いたらもう書けない。諦めれ。
508デフォルトの名無しさん:2008/12/30(火) 20:48:53
>>506
やっぱり無理ですか。

変数のスコープがループ内のみのときは
C99やC++では、割とよく使っていたのですが。
509デフォルトの名無しさん:2008/12/30(火) 21:06:48
>>508
そんなにスコープを気にするなら
{
 double d = 0;
 for (int a = 0; a < 10; a++)
 {
 }
}
みたいにすれば。
でもそんな細かいことは普通気にしなくて良い。
510デフォルトの名無しさん:2008/12/30(火) 21:13:56
まあ、そんな滅多に必要にならないし、
たまにならスコープ気にしないか、>>509かで十分な気がする。
511デフォルトの名無しさん:2008/12/30(火) 21:47:37
そもそもC++でもC99でも>>505の前者の書き方(複数の型)はできないぞ。どこの拡張だそれ、VCでも無理だし。
512デフォルトの名無しさん:2008/12/30(火) 21:57:34
it's D
513デフォルトの名無しさん:2008/12/30(火) 22:00:40
Dでも無理w
514デフォルトの名無しさん:2008/12/30(火) 23:01:26
>>509
手抜きのときはたまにそれやる

ただし、そういうことする場合は、普通に考えればメソッド抽出できるし、
VSならリファクタリングで一発なので、まじで手抜きのときしかやらないけど
515デフォルトの名無しさん:2008/12/31(水) 11:01:12
contextmenustripで「終了(X) CTRL+Q」の"CTRL+Q"みたいにショートカットを当てたいときはどうすればいいですか?
516デフォルトの名無しさん:2008/12/31(水) 11:17:14
>>515
デザイン時の話なら、その項目でプロパティ出してShortcutkeysとShortcutKeyDisplayStringと
ShowShortcutKeysを設定。
517デフォルトの名無しさん:2008/12/31(水) 14:07:36
stringに対するforeachは遅いからfor使えというパフォーマンスガイドラインが昔はあったと思うけど,
今は改善されてるの?
518デフォルトの名無しさん:2008/12/31(水) 14:45:15
バイナリでのファイルの書き出しができません
ググって探したのですが
BinaryWriter w = new BinaryWriter(File.OpenWrite("dd.dat"));
w.Write(読み込んだバイト配列);
w.Close();
としましたが、テキストで保存されているようで
notepad等で文字がそのまま読めます。
どのようにすればいいのでしょうか?
519デフォルトの名無しさん:2008/12/31(水) 14:53:46
その「読み込んだバイト配列」には何が入ってるの?
入ってるバイトデータがそのまま出てるだけだと思うが。
520デフォルトの名無しさん:2008/12/31(水) 14:58:06
byte[] 読み込んだバイト配列 = new byte[ファイルの長さ];
reader.Read(読み込んだバイト配列, 0, 読み込んだバイト配列.Length);
読み込んでるのは数字や日本語文章のテキストファイルです
デバックでとめてみると配列には整数が入っています。
521デフォルトの名無しさん:2008/12/31(水) 14:59:58
おーけー、バイナリエディタでdd.datを開けてみような
522デフォルトの名無しさん:2008/12/31(水) 15:02:08
>>516
うまくいきました。ありがとうございます
523デフォルトの名無しさん:2008/12/31(水) 15:03:38
ワロス
524デフォルトの名無しさん:2008/12/31(水) 15:24:54
何がおかしい
525デフォルトの名無しさん:2008/12/31(水) 15:26:18
バイナリの意味が分かってないみたいだな
テキストエディタで開けなくしたいだけならDeflateStreamでも使って圧縮したら
526デフォルトの名無しさん:2008/12/31(水) 15:42:02
理解できていないようです
w.Write((int)123456789);
だとわからない文字になるのですが
w.write("123456789");
だと空白文字の後123456789となります
あるソフトでテキスト形式(主に数字)からバイナリに
変換するのがあるのですが
ファイルも小さくなりわからない文字
になるのですが圧縮してるということですか?
527デフォルトの名無しさん:2008/12/31(水) 15:47:13
どうしてるかはそのソフト次第
圧縮かもしれんしキー固定の暗号化かもしれんしBASE64かもしれん
528デフォルトの名無しさん:2008/12/31(水) 15:48:31
(;゚Д゚);゚Д゚);゚Д゚)ジェットストリームポカーン
529デフォルトの名無しさん:2008/12/31(水) 16:09:39
BASE64だと大きくなるし、シーザー暗号のたぐいだとサイズは変わらない。ということで、圧縮かな。
530デフォルトの名無しさん:2008/12/31(水) 16:55:18
XPと.NetFrameWork3.5で、
Accessのデータベースファイルdata.mdbを
実行ファイルと一緒に配布して使いたいと思っています。
OleDbConnectionを使用して

OleDbConnection  cn = new
      OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");

といった具合で使用しているのですが、
インストール先のPCには.NetFrameWork3.5がインストール
されていればOKなのでしょうか?
それともAccessのソフトもしくは
その他のファイル(Microsoft.Jet.OLEDB.4.0?)が
必要なのでしょうか?

もし別ファイル必要ならば、
別のやり方を使って.NetFrameWork3.5のみで
動作させることはできますか?

よろしくお願いします。
531デフォルトの名無しさん:2008/12/31(水) 17:01:37
>>530
OLEDBプロバイダが必要。って、最新のMDACでは含まれてないんだっけか。
532デフォルトの名無しさん:2008/12/31(水) 19:51:42
デシマルってなんすか?!w
intとちがうんですかwwww
533デフォルトの名無しさん:2008/12/31(水) 19:53:28
百人一首の中のの坊さんの名前じゃないの?
534デフォルトの名無しさん:2008/12/31(水) 20:12:15
日本の船の名前とか?
535デフォルトの名無しさん:2008/12/31(水) 21:11:29
そういやデシマルよりdoubleの方がはるかに表せる数の範囲は多いんだよな
536デフォルトの名無しさん:2008/12/31(水) 21:23:05
すまん、教えてくれ。
↓だとコンパイルエラーになる。配列をコンストラクタで初期化したい場合、どうすりゃいいの?

AutoResetEvent[] diposeWait = new AutoResetEvent[3] { AutoResetEvent(false), AutoResetEvent(false), AutoResetEvent(false) };
537デフォルトの名無しさん:2008/12/31(水) 21:27:50
オブジェクトを作るときは必ずnew
コンストラクタ呼び出しは必ずnew
538デフォルトの名無しさん:2008/12/31(水) 21:34:48
>>537
自己解決しました。ありがとうございます。
でも↓はいまいち納得出来ないかも・・
AutoResetEvent[] diposeWait = new [] { new AutoResetEvent(false), new AutoResetEvent(false), new AutoResetEvent(false) };
539デフォルトの名無しさん:2008/12/31(水) 21:38:41
ん?何が納得できないの?
540デフォルトの名無しさん:2008/12/31(水) 21:39:02
ちなみにコピーコンストラクタとメモリの解放
541デフォルトの名無しさん:2008/12/31(水) 21:41:43
そんなC++の呪縛は忘れて良い
542デフォルトの名無しさん:2008/12/31(水) 21:43:34
忘れた頃に Null Pointer Assignment...
543デフォルトの名無しさん:2008/12/31(水) 21:45:37
NumericUpDownコントロールでMinimum = 1としているのにValue = 0が可能なのは何故なんですか?
544デフォルトの名無しさん:2008/12/31(水) 22:32:03
>>535
正負の無限大まで扱えるよ!というのは置いといて、±1.7e308とか大きすぎてもう・・
有効桁数を超えると扱い難いから滅多に使わんけどね。

有効桁数は10進数だと
float - 約7桁
double - 約15桁
decimal - 約28桁
545デフォルトの名無しさん:2008/12/31(水) 23:04:53
for文で表現できないwhile文は存在する?
546デフォルトの名無しさん:2008/12/31(水) 23:05:48
while (true)
547デフォルトの名無しさん:2008/12/31(水) 23:07:00
for(;;)
とどう違うわけ?
548デフォルトの名無しさん:2008/12/31(水) 23:10:07
>>545
ない
549デフォルトの名無しさん:2008/12/31(水) 23:10:18
for(; <expr> ;) <sentense> は
while(<expr>) <sentense> と等価だから
そんなのはあり得ない。
550デフォルトの名無しさん:2008/12/31(水) 23:11:58
do
loop while(...)
551デフォルトの名無しさん:2008/12/31(水) 23:13:10
それは do 文
552デフォルトの名無しさん:2008/12/31(水) 23:52:53
string += intが出来るのっておかしくない?
C#的に
553デフォルトの名無しさん:2008/12/31(水) 23:57:07
>>552
なんで? C# 的には演算子のオーバーロードが行えるから
string operator +(string s, int i) が定義してあればその式は普通じゃね?
554デフォルトの名無しさん:2009/01/01(木) 00:14:05
ことstringを含む加算演算子に関しては言語仕様に明確に規定されてる
555デフォルトの名無しさん:2009/01/01(木) 00:14:56
operator +(string,string)と
stringへの暗黙の変換が定義されてるんだろ
556デフォルトの名無しさん:2009/01/01(木) 00:34:30
>>555
operator +(string,string)もstringへの暗黙の変換も定義されてないよ
557デフォルトの名無しさん:2009/01/01(木) 00:40:48
string s;
int i;
で、s += iは、おそらくs = string.Comcat((object)s, (object)i);になっているのだと思う。
558デフォルトの名無しさん:2009/01/01(木) 00:51:37
通常のクラスやstructにはstringへの暗黙の変換が定義されてるけど
実際に定義を書いて[Obsolete("",true)]
といった属性をつければstringとの+もコンパイルエラーに出来るぜ
559デフォルトの名無しさん:2009/01/01(木) 01:01:33
>>558
暗黙の変換なぞ定義されてないってば
Object.ToStringは必ず存在するけど
演算子のオーバーロードが定義されてたらそっちの方が優先されるだけ

暗黙の変換が定義されてるってのは
Hoge hoge = new Hoge();
string huga = hoge;
が成り立つってことだぞ
560デフォルトの名無しさん:2009/01/01(木) 01:08:05
そういやそうだな
なるほどそういう仕組みか
561デフォルトの名無しさん:2009/01/01(木) 01:29:02
なんでs++は出来ないの?
562デフォルトの名無しさん:2009/01/01(木) 01:30:03
事故解決しました
563デフォルトの名無しさん:2009/01/01(木) 02:16:24
>>529
Base64の文字列をデコードしてバイナリファイルで保存するんじゃね?
ちなみに、桜エディタにはuudecodeとbase64デコーダが付いてる。
メーラならその辺のデコーダは一通りそろえてるだろ。

Base64は「数字の羅列」にはほど遠いと想うが
bin hexなら数字が並んでるように見えるんじゃね?
(かつて1度だけbinhexで送られてきてBeckyで自動解読されなかった記憶がある)

自動で圧縮してくれるテキストエディタも昔考えたことがあったが、
ファイルの互換性ないし、圧縮するほど長いテキストは書かないし、NTFSで圧縮サポートしてるから 一瞬で廃案になったけどなw
564デフォルトの名無しさん:2009/01/01(木) 13:04:45
>535
用途が違うから単純に比べるものじゃない。
浮動小数で誤差が出ようが気にしないならdoubleで
誤差が出たら困るようなものはdecimalを使うんだよ。
565デフォルトの名無しさん:2009/01/01(木) 17:33:52
別スレッドでフォームの操作してもフォームに反映させずにシミュレートだけして結果を取得するにはどうすればいいの?
フォームいじると変化してしまうんだけど
566デフォルトの名無しさん:2009/01/01(木) 17:38:18
ルワンダ語でもおk
567デフォルトの名無しさん:2009/01/01(木) 17:38:41
フォームの操作で行われる処理だけを実行すればいいんじゃね?
568デフォルトの名無しさん:2009/01/01(木) 17:43:26
コントロールを変数代わりに使ってるんじゃね
メソッド呼び出しの代わりにボタンのClickイベントを使ってるとか
569デフォルトの名無しさん:2009/01/01(木) 17:57:45
フォームが持ってる情報を全部まるごとパクって非表示でシミュレートしたい
作ってるときにはそれをGUIで確認できようにしたい(いわゆるデバッグモード?)から処理だけ実行ではなく
570デフォルトの名無しさん:2009/01/01(木) 18:00:43
考え方が間違ってる
それって結局,処理自体にはフォームは必要ないんだろ?
それをわざわざフォームに依存させるのは非常に頭悪い
571デフォルトの名無しさん:2009/01/01(木) 18:10:42
処理がプラグインまかせで見えない
572 【吉】 【1767円】 :2009/01/01(木) 18:17:40
>>569
UIとUIに持たせている情報を分離させ、その内部情報を使用して処理を行わせればいいんじゃね?

UIと内部処理を分離させる方法の一つとして、データバインディングが標準で利用出来る。

バージョンを明記していないから分からないけど、2.0以降(VS 2005以降)と仮定して、

Control(各UIパーツ) --> BindingSource --> DataSet

というような、一般的なデータ連結を行えばよい。


また、フォームが持っている情報というのが何なのか、もう少し詳細に明記した方がよいです。

例えば、テキストボックスに入力した文字列、ラジオボタンやチェックボックスの選択なのか、
または、フォームのサイズ、位置、色のような表示に特化した情報なのか。

この辺が分かるだけでも、回答の幅は広がると思う。
573デフォルトの名無しさん:2009/01/01(木) 18:21:12
旧VB だと、非表示で Load とかできたからな・・・
574デフォルトの名無しさん:2009/01/01(木) 21:59:05
そこまでエスパーする必要はないと思う
日本語か、その他われわれと意思疎通可能な言語で質問してこない限りは
575デフォルトの名無しさん:2009/01/02(金) 00:33:00
>>572
バインドされたデータいじるときもInvokeが必要だぜ
576デフォルトの名無しさん:2009/01/02(金) 00:34:55
データバインド云々というより、UI とビジネスロジックの分離とか、その辺のレベルからして
理解していないと思われ。
577デフォルトの名無しさん:2009/01/02(金) 00:51:48
こうすべき、やってはいけないは別として
インスタンスformAの箱庭を作るには
FormA sim = formA.Copy();
で良いよな?
578デフォルトの名無しさん:2009/01/02(金) 01:01:28
何そのメソッド・・・
579デフォルトの名無しさん:2009/01/02(金) 01:04:44
FormA *sim = &formA;
580デフォルトの名無しさん:2009/01/02(金) 01:19:39
箱庭・・?
581デフォルトの名無しさん:2009/01/02(金) 01:29:49
キモいな
582デフォルトの名無しさん:2009/01/02(金) 12:32:17
WndProc で WM_QUERYENDSESSION メッセージを捕捉しようとしているんですが、
フォームが開いているときはちゃんと細くできて、タスクトレイに入れているときは
WndProc にメッセージがきません。
WM_QUERYENDSESSION は、フォームが開いているときにだけしか来ないのでしょうか。
タスクトレイに入れているとき ( this.Visible = false; ) はだめですか?
583デフォルトの名無しさん:2009/01/02(金) 12:42:46
>>582
言ってる意味が分からない。
フォームって「タスクトレイに入れる」なんて芸当できたっけ?
できたとして、その時「フォーム」のインスタンスは存在しているの?
584デフォルトの名無しさん:2009/01/02(金) 12:43:42
>>583
非表示にしてる、って書いてあるやん・・・
585デフォルトの名無しさん:2009/01/02(金) 13:26:18
BSODになる例外の処理ってどうやってキャッチするの?
WinXP sp3
586デフォルトの名無しさん:2009/01/02(金) 13:27:05
>582
非表示にしてShowInTaskbarもfalseにするとFormの実体がなくなるようでWndProcは動作しなくなるよ。
Formの実体がなくならないように非表示にすればいいんだよ。細かい手順は忘れた。
587デフォルトの名無しさん:2009/01/02(金) 13:30:41
>>585
無理
588デフォルトの名無しさん:2009/01/02(金) 14:57:48
そーいえば、再起動とシャットダウンって判別できるのかな?
SystemEvents.SessionEnding で、ログオフとシャットダウンは区別できるけど。
589デフォルトの名無しさん:2009/01/02(金) 15:05:18
ExitWindowsEx()、InitiateSystemShutdown()、InitiateSystemShutdownEx() あたりを
フックするしかなさげ。
590デフォルトの名無しさん:2009/01/02(金) 15:59:26
>>589
どもです。
ExitWindowsEx をフックすればよさそうですが、フックって SetWindowsHookEx を
使うのでよいのでしょうか?
591デフォルトの名無しさん:2009/01/02(金) 16:03:20
違う。API フック。IAT の関数アドレスを書き換える。すべてのプロセスに対して行う必要があるので、
いずれにせよ SetWindowsHookEx() によるグローバルフックは必要。
592デフォルトの名無しさん:2009/01/02(金) 17:29:10
WPFでTextBoxを透明にしようとしています。
TextBox Background="Transparent"
としましたが、まだ枠が残ります。
枠も消したいのですが、どうしたらよいでしょう。
ご教示いただけないでしょうか。
よろしくお願いします。
593デフォルトの名無しさん:2009/01/02(金) 17:30:02
WPFでTextBoxを透明にしようとしています。
TextBox Background="Transparent"
としましたが、まだ枠が残ります。
枠も消したいのですが、どうしたらよいでしょう。
ご教示いただけないでしょうか。
よろしくお願いします。
594デフォルトの名無しさん:2009/01/02(金) 17:41:38
BorderThickness="0" でどうか。
WPFは専用スレのが早いかも
595デフォルトの名無しさん:2009/01/02(金) 17:43:22
>>594
Thanks! それでした。できました。
専用スレは初心者を相手にしてくれんのです。
596デフォルトの名無しさん:2009/01/02(金) 18:00:43
BorderBrush="Transparent" というのもあるんだな。
597デフォルトの名無しさん:2009/01/02(金) 18:06:40
無理です
どうしてもというなら自分で作るかWPF使いましょう
598デフォルトの名無しさん:2009/01/02(金) 18:07:12
>>597
間違えたスルーしてくれ
599デフォルトの名無しさん:2009/01/02(金) 18:37:26
>>596
BorderBrush="Transparent"でもできました。
ありがとうございます。

もうひとつWPFで質問です。

ファイルを引数などから読む場合、
xamlにはなにを書けばよいのでしょう?
バインディングらしい、というのはわかって、
.xaml
Text="{Binding Path=SetText}"

.xaml.cs
using System.IO;
string file = (@"C:\sample.txt");
string SetText = File.ReadAllText(file,Encoding.Default);
としてみましたが、文字を表示することはできませんでした。
よろしくご指導お願いします。
600デフォルトの名無しさん:2009/01/02(金) 18:39:44
WPF スレ行けよハゲ
601デフォルトの名無しさん:2009/01/02(金) 18:42:25
専用スレあるのにスレ違いの話題をいつまで続けるつもりだ。
602デフォルトの名無しさん:2009/01/02(金) 18:50:44
WinFormsスレがあったらC#スレでもVB.NETスレでもWinFormsの話禁止になるの?
603デフォルトの名無しさん:2009/01/02(金) 18:51:52
そういう仮定の話はよそでやってくれ。

次の方、どーぞー
604デフォルトの名無しさん:2009/01/02(金) 19:18:49
           __
        , ‐' ´   ``‐、             / ̄:三}
.     /,. -─‐- 、.   ヽ        /   ,.=j
 _,.:_'______ヽ、 .!       ./   _,ノ
  `‐、{ へ  '゙⌒ `!~ヽ. !     /{.  /
    `! し゚  ( ゚j `v‐冫   , '::::::::ヽ、/     そんなことよりSEXしようぜ!
.    {.l   '⌒      ゙ 6',!   / :::::::::::::::/ __
.     〈  < ´ ̄,フ  .ノー'_ , ‐'´::::::::::::::;/ (_ノ)‐-、
.      ヽ.、 ` ‐", ‐´‐:ラ ':::::::::::::::: ;∠.   ヽ_}  ゙ヽ
        ,.r` "´  /:::::::::::::::::::ィ´  `ゝ  !、  /
     /       / :::::::::::::::: ; '´   /´\ /   r'\
.     i      ! ::::::::::::::/ 墨 | .!::::::::/ヽ、.._!ヽ. ヽ、
     {      {:::::::::::;:イ /   ‖i:::::::/:::::::::::::/  \
.      ヽ       ヽ,.ァ‐'´ /ヽ 二 ,/`ヽ、::::::::: /
605デフォルトの名無しさん:2009/01/02(金) 19:30:32
ttp://www.hsjp.net/upload/src/up56533.jpg
このようなTree Viewを使いたいんですが
WPFを使わずにC#でも実装できますか?
606デフォルトの名無しさん:2009/01/02(金) 19:35:02
>>605
できる。アイコンを用意する必要があるけど。
607デフォルトの名無しさん:2009/01/02(金) 19:35:08
「このような」というのは,その画像のどういうところを指しているのか教えてください
608デフォルトの名無しさん:2009/01/02(金) 19:40:31
単なるFolderBrowserDialogじゃないの?
609デフォルトの名無しさん:2009/01/02(金) 19:40:52
>>606-607
すみません
VistaのExplorerで使用されているような
破線(XP Luna)ではなく三角で階層を表示するような
Tree Viewです
610デフォルトの名無しさん:2009/01/02(金) 19:45:26
VisualStyle依存だからなあ
もうWPFで作ってElementHostでよくね
611デフォルトの名無しさん:2009/01/02(金) 19:58:55
ShowPlusMinus を false にして、オーナードロー。
612デフォルトの名無しさん:2009/01/02(金) 20:01:18
線の表示非表示はプロパティ1発。
△は、[+][-]画像がVisualStyleで△画像になってるだけだよね、これ。
613デフォルトの名無しさん:2009/01/02(金) 20:17:56
VSって何ですか?
614605:2009/01/02(金) 20:18:49
>>610-612
ありがとうございます。
検討してみます。
615デフォルトの名無しさん:2009/01/02(金) 21:16:08
>>613
VS

* スイス・ヴァレー州(Valais)の略称。
* versus(バーサス、ヴァーサス、VS.)
o VS (misono) - misono のソロデビューシングル。
o VS. (雑誌) - 光文社の雑誌。
o Versus (Mr.Children) - Mr.Childrenのアルバム。
o Versus (テレビ局) - コムキャスト傘下のスポーツ専門局。
o Versus (テレビ番組) - FIGHTING TV サムライのテレビ番組。
o VERSUS (テレビ朝日) - テレビ朝日の音楽番組。
o バーサス (パチスロ) - 1998年にアルゼから発売されたパチスロ(4号機)。
o VERSUS (映画) - 北村龍平監督の映画
* ファイナルファンタジー ヴェルサスXIII(Final Fantasy Versus XIII) - スクウェア・エニックスが発売予定のゲームソフト。「ファイナルファンタジーシリーズ」の1つ。* ヴァージン・アトランティック航空のIATA航空会社コード
* トヨタ・WiLL VS
* Visual Studio ⇒ Microsoft Visual Studio
* VSWR(無線工学)の略。
* ヴィダルサスーン(Vidal Sasoon)の略。
* Visual Styleの略。Windowsにおいて、XP以降の視覚スタイルをさす場合が多い。
* VIRGINIA SLIMSの略。
* Microsoft社の統合開発環境VisualStudioの略。
* 2008年の第43号から週刊少年チャンピオン(島崎カオル)で連載中の漫画。
616デフォルトの名無しさん:2009/01/02(金) 21:28:26
久々にパケロスとか言いたくなった
617デフォルトの名無しさん:2009/01/03(土) 14:01:22
>>615
ヴィダルサスーン ワロタ(・∀・)w そんな洗剤もありましたね

C++(Managedじゃない)で書かれたプログラムのプラグインは
C#で書くことは出来ないよね?
用はC#でDLL書いてC++で扱わせたい訳だが・・・

可能ならPlugin SDKをC++クイックブックを見ながらC#へ移植する作業を開始すrんだg
(それよりもC++でがんがったほうが良いのかなぁ。Delphiへ逃げる方が楽そうだけど・・・)
618デフォルトの名無しさん:2009/01/03(土) 14:06:53
C++/CLIで仲介してやるしかない
C#で書いたdllをC++/CLIから参照する形かな
619デフォルトの名無しさん:2009/01/03(土) 14:10:22
できるかできないか、ということならできる。
でもソースあるなら間に別のものかませた方がいい気がする。
620デフォルトの名無しさん:2009/01/03(土) 14:13:20
>>619
どうやって関数をエクスポートするの?
621デフォルトの名無しさん:2009/01/03(土) 14:14:29
622デフォルトの名無しさん:2009/01/03(土) 14:15:09
それギャグにしか見えないんだが
623デフォルトの名無しさん:2009/01/03(土) 14:17:35
へー。こんな方法があるんだ。参考になりました。
624617:2009/01/03(土) 14:58:33
>>621
案外いけるんじゃ・・・・無いなw
CLI的にはWin32から呼び出せるようには出来るけど
MSがそれをさせないわけか

>>618
C++/CLIで作ってもNative C++から利用できるのか…
サンクス、C++/CLIの利用を考えてみるわ。

.netの心地よいStringとWinFomsが使いたかったので C++/CLIだけで作っても良いのか。(馴れなかったら速攻でC#に逃げるけどw)
(WinFormsが使いたい、というより、MFCに絶望した orz)
625デフォルトの名無しさん:2009/01/03(土) 15:04:01
C++/CLIの利用は必要最小限にして極力C#に回した方がいいよ
MS自身がそうやってるくらいだし
626デフォルトの名無しさん:2009/01/03(土) 15:22:35
うむ、あいだを取り持つC++/CLIだな。
627デフォルトの名無しさん:2009/01/03(土) 15:32:27
通常利用: C#
unmanaged相互運用: C++/CLI
COM相互運用: VB.NET

でいいと思うよ
628デフォルトの名無しさん:2009/01/03(土) 15:37:30
C#4.0では
>COM相互運用: VB.NET
がいらなくなるよ
629デフォルトの名無しさん:2009/01/03(土) 15:53:53
1プロセスにCLRは1バージョンしか読み込めないって制限のせいで
>>621みたいにしたのかな

4.0からはこんなことしないでもいけるようになったりする?
そしたら.netなパラダイスが来るような。
EmEditorとかのプラグインもC#で書けるようにならないかなぁ
630デフォルトの名無しさん:2009/01/03(土) 16:06:57
4.0はref地獄やMissing地獄なんかがなくなってCOMが扱いやすくなるだけ
631デフォルトの名無しさん:2009/01/04(日) 01:11:58
すみません、VCS2008でWebBrowserコントロールを使用したフォームアプリケーションを作製しているのですが
WebBrowserが表示しているページ上の画像ボタンを実際にはクリックせずに
クリックしたように動作させたいのですが方法がわかりません
だれかたちけて><
632デフォルトの名無しさん:2009/01/04(日) 01:13:57
>>631
日本語でOK

エスパーレスすると、DOM でよさげだけど。
633デフォルトの名無しさん:2009/01/04(日) 02:23:25
>>632
よくわかんないです><
634デフォルトの名無しさん:2009/01/04(日) 02:46:54
おれもエスパーじゃないので、まずはクリックしたらどうなるか説明してくれや。
635デフォルトの名無しさん:2009/01/04(日) 03:31:41
いわゆるひとつのクリックジャッキングってやつですか?
636631 訂正:2009/01/04(日) 04:40:22
VC#2008上でWebBrowserコントロールを使用したフォームアプリケーションが炸裂しているのですが、
画像ページを表示しているWebBrowserコントロールの上にあるボタンをクリックせずに、
まるでクリックしたかのようにWebBrowserコントロールを動作させたいのですが方法がわかりません。
<私に実際の解決法を教える事で、愛のカタチを見せつけて下さい>
637デフォルトの名無しさん:2009/01/04(日) 04:42:28
>>636
まるでクリックしたかのような動作ってどういう動作?
638デフォルトの名無しさん:2009/01/04(日) 05:04:40
だから DOM で Submit なりなんなりしろよ。
639デフォルトの名無しさん:2009/01/04(日) 07:52:46
>>636

フォームならフォームをHtmlElementとして
HtmlElement form = webbrowser.Document.forms[x];
で取得して

form.InvokeMenber("submit")でいける。

リンクやボタンなら webbrowser.Document.Linksや
webbrowser.Document.GetElementByTagnames("a") で 取得して
InvokeMember("Click")とすればいいよ
640デフォルトの名無しさん:2009/01/04(日) 08:41:31
どうせ良からぬ目的だろうが
641デフォルトの名無しさん:2009/01/04(日) 21:08:57
最近プログラミングそのものを勉強し始めた初心者です。

書籍管理プログラムを作りたくて始めたのですが、ISBNコードからネット上で
書籍名等の情報を検索してローカルのDBに格納したいのですが、プログラムから
アクセスして部分で躓いてます。
どのようにすればいいのか、ヒントだけでも教えていただけないでしょうか?
もしくは解説されているサイトがあれば教えていただけないでしょうか
642デフォルトの名無しさん:2009/01/04(日) 21:16:32
どこまで出来ていて、どこで躓いているのか詳しく
643デフォルトの名無しさん:2009/01/04(日) 21:22:08
せめてなんてサイトからデータを取得しようとしているのか
わからないと答えられないよ
644641:2009/01/04(日) 21:39:22
すみません

ローカルでの蔵書DBがらみはほぼできています
ただISBNをネット検索をかけようと思った時点でまったくやり方がわからなくなってしまいました。

具体的にはアマゾンかgoogle書籍検索からデータの取得を考えています。
といっても他の蔵書管理ソフト(私本管理とかです)がアマゾンから所得しているというだけで
同じようにしてみようと考えてる程度なんですが。

よろしくお願いします
645デフォルトの名無しさん:2009/01/04(日) 21:44:03
アマゾンに対して HttpWebRequest して、結果を取得すればいいだけじゃね?
うまく考えないと、アマゾン側の変更で大変なことになるけどw
646デフォルトの名無しさん:2009/01/04(日) 21:53:21
amazonってAPI公開してなかったっけ
webサービス使って取得と言う筋はどうだろう
647デフォルトの名無しさん:2009/01/04(日) 23:42:28
developer登録すればapiつかえる
648デフォルトの名無しさん:2009/01/05(月) 00:05:45
今までずっと「しーしゃーぷ」だと思ってた……
ふらっとだったんだね。ごめん、それだけ。
649デフォルトの名無しさん:2009/01/05(月) 00:31:45
なんの釣りですか?
650デフォルトの名無しさん:2009/01/05(月) 00:36:19
>>644
Amazon とかよりこっちの方がよいと思う。
ttp://www.books.or.jp/
検索方法はHTTP POST とかで検索。
651デフォルトの名無しさん:2009/01/05(月) 02:16:04
XP(sp2)、C#2008EEを使っています。

ttp://dobon.net/vb/dotnet/datagridview/maskedtextboxcolumn.html
こちらのサイトのコードを参考にして、
編集セルに自作テキストボックスを表示するプログラムを作成したのですが、
なぜか小文字のqだけ入力できません。

サイトのコードをコピペしてMaskedTextBoxでもやってみましたが、
やはり小文字のqだけ入力できませんでした。

※そのままコピペだと数字しか入力できないので
maskedColumn.Mask = "000"; 

maskedColumn.Mask = string.Empty;
としました。

原因わかる方いらっしゃいましたらよろしくお願いします。
652651:2009/01/05(月) 02:28:35
自己レスです。
とりあえずEditingControlWantsInputKeyメソッドの所に
case Keys.Q:
  return true;
を入れたら入力できるようになりましたが、
スッキリしないので原因わかる方よろしくお願いします。
653デフォルトの名無しさん:2009/01/05(月) 03:26:11
>>639
横レスだが、HtmlElementの使い方を調べてる最中だったからdクス。
654641:2009/01/05(月) 21:23:22
641です いろいろと助言ありがとうございます。
日曜プログラマなので、せっかくのアドバイスも試せてはいませんが、いろいろと勉強させていただきました。
とりあえず、またやってみます。
ありがとうございます
655デフォルトの名無しさん:2009/01/06(火) 10:53:39
class A { }
class B
{
 A a;
 string s;
 ~B() { /* aやsを使いたい */ }
}

C#ではデストラクタで参照型のメンバが生きている保証は無いと思うのですが
メンバが回収されるのをデストラクタより遅らせる定型的なパターンとかありませんか?
656デフォルトの名無しさん:2009/01/06(火) 10:57:26
GCHandle
657655:2009/01/06(火) 11:56:51
>>656
ありがとうございました。
通常のファイナライズより後に呼ばれるCriticalFinalizerObjectの特性と組み合わせて
こんなん作りました。

class DelayFinalizer<T> : CriticalFinalizerObject
 where T : class
{
 public T Target { get; private set; }
 private GCHandle _handle;

 public DelayFinalizer(T target)
 {
  this.Target = target;
  this._handle = GCHandle.Alloc(target);
 }

 ~DelayFinalizer()
 {
  if (this._handle.IsAllocated)
   this._handle.Free();
 }
}
658デフォルトの名無しさん:2009/01/06(火) 12:12:17
再利用を目的にしてるんだったらそんな大げさなもの使わなくても
IDisposable実装するだけで十分じゃね?
別にアンマネージリソース持ってるわけじゃないんだから
必ずファイナライザが呼び出されることを保障する必要はないと思うんだけど
659658:2009/01/06(火) 12:15:34
「大げさなもの」はGCHandleのことではなくCriticalFinalizerObjectのことだよ
補足
660デフォルトの名無しさん:2009/01/06(火) 12:51:05
ごめんなさい
>>658は勘違い
661デフォルトの名無しさん:2009/01/07(水) 01:35:39
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・

---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
662デフォルトの名無しさん:2009/01/07(水) 08:55:20
動的に参照するアセンブリからAssembly.GetReferencedAssemblies()で得られるAssemblyNameの中で、
AssemblyNameが.NETのクラスライブラリかどうかを判別する方法はないでしょうか?
.NET 2.0のみなら\WINDOWS\Microsoft.NET\〜の中にdllがあるかどうかを調べればいいのですが、
.NET 3.0以降で追加される部分は別のディレクトリにあったりするみたいなので、その部分の
dllをどう調べればいいのか分かりません。
\Program Files\Reference Assemblies\〜がそうみたいなのですが、Program Filesにインストール
されていること前提にdllを検索してもいいのでしょうか?
663デフォルトの名無しさん:2009/01/07(水) 15:34:27
Win2KからXPにUGしたからWINDOWSじゃなくてWINNTにそれがある
664デフォルトの名無しさん:2009/01/07(水) 15:39:45
WINNT351だな
665デフォルトの名無しさん:2009/01/07(水) 15:57:42
>>662
GetAssemblyNameを呼んでみる

あと\WINDOWS\Microsoft.NET\〜や\Program Files\Reference Assemblies\〜は
コンパイル時に必要なアセンブリであって、実行時に使われるのではないと思ったよ
666デフォルトの名無しさん:2009/01/07(水) 16:00:21
ところでどこからどこまでが「.NETのクラスライブラリ」なんだろう?
667デフォルトの名無しさん:2009/01/07(水) 16:11:16
FrameWork標準の奴じゃね?
668デフォルトの名無しさん:2009/01/07(水) 17:26:47
字面だけみればnativeに対する.NETの意になるんだろうが、
本人は恐らく>>667のつもりだろうな
669デフォルトの名無しさん:2009/01/07(水) 18:40:42
参照渡しって出来るだけintとかstringだけに絞った方がいいの?
インスタンスまるごととか推奨されてないの?
670デフォルトの名無しさん:2009/01/07(水) 18:45:11
インスタンス以外の何を参照渡しするのやら
値渡しの方が重いだろ
671デフォルトの名無しさん:2009/01/07(水) 19:29:27
>>663,664
すべてのPCで\WINDOWS\〜に入っているわけではないのですね…
でもここはRuntimeEnvironmentで取得できるので何とかなりそうですね。
問題は3.0以降の部分ですが…

>>665
マネージドかネイティブの判別はそれでいけるのですが、今回お聞きしたいのは
>>667,668の通り、.NET Framework標準のクラスライブラリかどうかの判別方法でした。
質問の仕方が非常に悪かったですね。すいません orz
672デフォルトの名無しさん:2009/01/07(水) 19:56:54
すべての標準のアセンブリのAssembly.FullNameをリソースに持っといて
それらと比較すれば十分じゃないの
673デフォルトの名無しさん:2009/01/07(水) 21:05:52
なんでラムダ式は戻り値の型で型推論してくれるのに
ジェネリックメソッドの型パラメータは戻り値の型で推論してくれないの?
674デフォルトの名無しさん:2009/01/08(木) 00:52:59
>662
GACからロードされたかである程度判別できそうだけど
厳密には全ての一覧でも持っておかないと無理かもね。
675デフォルトの名無しさん:2009/01/08(木) 02:09:08
マイクロソフトの電子署名がしてあるかどうか
676デフォルトの名無しさん:2009/01/08(木) 03:15:45
それだとMS製であることしか分からないんじゃないか
677デフォルトの名無しさん:2009/01/08(木) 07:01:51
.NET Fx 3.5なんて名前こそフレームワークだけど実質ただのライブラリだし。
結局のところ全部ハッシュもっとくしかないだろ。
678デフォルトの名無しさん:2009/01/08(木) 07:24:38
>>672,674-677
やっぱりあらかじめテーブルとしてAssembly.FullName持っておくしかないですか…
全部のdll分調べるのはちと骨が折れそうです orz

とりあえず、dllからAssembly.FullNameを取り出すプログラムを適当に組んでみます。
ありがとうございました。
679デフォルトの名無しさん:2009/01/08(木) 08:08:38
>>673
実装された時期が4・5年違うのが一番の原因。
680デフォルトの名無しさん:2009/01/08(木) 09:24:01
>>678
ここの一覧をつかっていいと思う。
...soft.NET\Framework\v2.0.50727\RedistList\FrameworkList.xml
...soft\Framework\v3.0\RedistList\FrameworkList.xml
...soft\Framework\v3.5\RedistList\FrameworkList.xml
681デフォルトの名無しさん:2009/01/08(木) 22:39:54
リフレクションを使って動的に属性を追加したり削除したりってできる?
682デフォルトの名無しさん:2009/01/08(木) 23:20:35
できない
メンバや型そのものを追加したりすることはできるけど
683デフォルトの名無しさん:2009/01/08(木) 23:36:34
d
684デフォルトの名無しさん:2009/01/09(金) 01:39:01
ref FormだとFormから継承されたMainFormクラスが通らなくなる
Formだと通る
refって何のためにあるの?
685デフォルトの名無しさん:2009/01/09(金) 02:40:36
これって出来ないんだっけ?

Form form = new MainForm();
Method1(ref form);
686デフォルトの名無しさん:2009/01/09(金) 02:40:39
使い方理解してないなら使うな
687デフォルトの名無しさん:2009/01/09(金) 09:38:19
>>685
できる
688デフォルトの名無しさん:2009/01/09(金) 09:39:40
>>681
全部型記述子経由でやるならできる。
と思う。
689デフォルトの名無しさん:2009/01/09(金) 11:33:17
>>684
refは呼び出す側が渡した変数そのものに呼び出された側が値を代入するためのもの
だからMethod1の定義がvoid Method1(ref Form form) { form = new HogeForm(); }
となっているとすると,MainForm form = new MainForm(); Method1(ref form);
はMethod1を展開すれば次のようなものと等価
MainForm form = new MainForm(); form = new HogeForm();//MainFormにHogeFormを代入できない
>>685ならformの型がFormだから通る
690デフォルトの名無しさん:2009/01/09(金) 12:23:52
>>689
そういう用途で使うなら
refじゃなくてoutを使うべきだけどな

あれ?refってどんなときに使えばいいんだっけ? って話だよなw

個人的には
void pixcelProcessing(ref Bitmap target)
{
  Bitmap source = target;
  Bitmap dest = new Bitmap(target);
  target = dest;
}
のようなときか
structを強制定期に参照渡しにして書き換えたいときにかな (今までそんなことはなかったけど)
691デフォルトの名無しさん:2009/01/09(金) 12:58:41
PInvokeでいくらでも
692デフォルトの名無しさん:2009/01/09(金) 13:02:00
呼び出し先で変数をインクリメントさせたいときにprivate限定で使ったりするな
693デフォルトの名無しさん:2009/01/09(金) 20:14:16
いずれにせよ、参照型のrefは稀にしか使わないな。
694デフォルトの名無しさん:2009/01/09(金) 22:11:52
UDP用のソケットでもref使う
695デフォルトの名無しさん:2009/01/09(金) 22:27:45
refもoutも、メソッド抽出で選択範囲間違えた時とかに出てくるくらいの感覚だなあ。
696デフォルトの名無しさん:2009/01/09(金) 23:12:20
bool TryHoge( out Hige hige ){}
みたいなのはよくやる
697デフォルトの名無しさん:2009/01/10(土) 01:13:16
>685
bool Method1<T>(ref T form) where T : Form, new()
みたいに宣言してみ。
698デフォルトの名無しさん:2009/01/10(土) 01:20:55
FormのコンストラクタとうFormのロード イベントって使い分けられることあるの?
699デフォルトの名無しさん:2009/01/10(土) 01:46:34
InitializeComponent()
700デフォルトの名無しさん:2009/01/10(土) 08:18:37
IDisposableのDisposeって、using使わないと呼ばれないんですか?
701おしry ◆B81hPRrN9Q :2009/01/10(土) 09:11:52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test
{
abstract class A
{
protected abstract string ToString(A a);

public sealed override string ToString()
{
return ToString(this);
}
}

class B : A
{
protected override string ToString(A a)
{
return a.ToString(a);
}
}
}

なぜコンパイルエラー?
無限ループしてるとか実用上の問題は無視してくれ。

エラー CS1501: 引数を '1' 個指定できる、メソッド 'ToString' のオーバーロードはありません。
702デフォルトの名無しさん:2009/01/10(土) 09:13:05
間違って他所のコテつけてしまったw
そして空白ミスったすまん。
703デフォルトの名無しさん:2009/01/10(土) 09:27:25
>>701
ToString(A) が protected だから。
base.ToString(a) は(A の ToString(A) が abstract だからコンパイルエラーだけど)呼べるが
a.ToString(a) は呼べない。
704デフォルトの名無しさん:2009/01/10(土) 09:30:51
>>703
ありがと
705デフォルトの名無しさん:2009/01/10(土) 09:31:06
BはAに含まれるが、AはBじゃないからだと思うが。
return ((B) a).ToString(a);
なら通るだろ。
706デフォルトの名無しさん:2009/01/10(土) 09:32:37
>>705
それはコンパイルが通るが多態性の意味がない。
707デフォルトの名無しさん:2009/01/10(土) 09:36:00
それは多態性の履き違いのような。
class B : A と同じ内容の class C : A があったとして、
a.ToString(a); は B と C どっちのコードが動くんだ?

708デフォルトの名無しさん:2009/01/10(土) 09:46:16
>>707
a の型に決まってんだろw
A b = new B();
A c = new C();
b.ToString(b); b.ToString(c); // B の ToString(A)
c.ToString(b); c.ToString(b); // C の ToString(A)
709デフォルトの名無しさん:2009/01/10(土) 10:20:26
サブフォルダの一覧をゲットする方法を教えてください。
いまいるフォルダ=Path.GetDirecoryName
いまいるフォルダにあるファイル=Directory.GetFiles
いまいるフォルダにあるサブフォルダ=???
よろしくお願いします。
710デフォルトの名無しさん:2009/01/10(土) 11:11:20
質問があります。
C#で、改行を出力したいと考えています。
ひとつだけなら単に、"\r\n"でできます。
string return = "\r\n";
改行が39個とかある場合には、どう書けばいいのでしょう?
string return39 = "\r\n\r\n\r\n………";
となっていて、数え間違いをして困っています。
ご教示ください。
711デフォルトの名無しさん:2009/01/10(土) 11:22:23
for (int i=0; i<39; i++) { return39 += "\r\n"; }

>>709
c# サブディレクトリ 列挙でぐぐれ
712デフォルトの名無しさん:2009/01/10(土) 11:48:54
>>710
Stringのコンストラクタの(Char[], Int32, Int32)使えば?
最初に\r\nだけ入れた配列用意しといてnew String(配列,0,改行の数*2)

俺だったら改行メソッドを39回呼び出す方を選ぶけど
713デフォルトの名無しさん:2009/01/10(土) 13:07:27
>>700
using使わないと自動的には呼ばれない
自分でDispose呼んでもいいけどその場合は必ずfinallyの中で呼ぶこと
714デフォルトの名無しさん:2009/01/10(土) 13:29:10
どのタイミングで呼ばれるかわからない
715デフォルトの名無しさん:2009/01/10(土) 13:52:08
ブロックを出るときでしょ?
716デフォルトの名無しさん:2009/01/10(土) 13:56:10
生存期間がローカルスコープに限定できない,
プロセスの終了にも関係なく何があっても絶対に開放しないといけないリソースを使う場合って
SafeHandleの類を使うしかないの?
717デフォルトの名無しさん:2009/01/10(土) 13:59:24
例えば何よ
718デフォルトの名無しさん:2009/01/10(土) 15:28:35
>>710
Environment.NewLine使ってあげて。
719デフォルトの名無しさん:2009/01/10(土) 15:34:07
>>716
例えばフォームアプリケーションだったら、自分のFormの派生クラスのDisposeがある。
最悪Mainでusingしてシングルトンとして扱うとか方法は考えられるはず。

あと、絶対に処理されないと本当にまずいなら、CriticalFinalizerObject派生。
720デフォルトの名無しさん:2009/01/10(土) 17:12:40
>>711
ありがとうございます。できそうです。
>>712
Stringのコンストラクタの(Char[], Int32, Int32)
を試してみました。これでもいけそうです。
ただ、Charは1文字なので、\r\nのときはだめっぽいです。\rだけでならできました。
ありがとうございました。
721デフォルトの名無しさん:2009/01/10(土) 17:28:29
CharとChar[]は違うけど…まあいいか
722デフォルトの名無しさん:2009/01/10(土) 17:54:14
そもそも改行がn回連続するような文字列って、それ本当に必要なのかどうかを
考えるべきだと思うけどもねえ。

たぶんその文字列を必要とする「何らかの処理」が存在してるんだろうけど、
その「何らかの処理」の作り方が本当にそれでいいのか。
まあ、9割方考え方に問題があるんだと思う。
723デフォルトの名無しさん:2009/01/10(土) 19:04:31
>>722
たぶん

















というレスを投稿するプログラムを作ってるんじゃないかと
724デフォルトの名無しさん:2009/01/10(土) 19:47:21
そんな馬鹿な
725デフォルトの名無しさん:2009/01/10(土) 19:53:56
俺もそういう荒らしスクリプト作ったことあるなぁw
726デフォルトの名無しさん:2009/01/10(土) 21:01:01
おまえか
727デフォルトの名無しさん:2009/01/10(土) 21:07:24
犯人はっけ〜〜ん☆
728デフォルトの名無しさん:2009/01/10(土) 22:12:40
2ch荒らしツールを作るのはプログラマなら基本じゃね?
729デフォルトの名無しさん:2009/01/10(土) 22:23:09
.NET標準コントロールなのにバグ多すぎじゃね?
730デフォルトの名無しさん:2009/01/10(土) 22:54:17
SearchOption.AllDirectories を使って固定ディスクのルートフォルダから検索すると、
UnauthorizedAccessException を投げるよね。
おそらくSystemVolumeInformationか何かを読みに行ってるんだろうね。
731デフォルトの名無しさん:2009/01/10(土) 23:06:21
唐突に何わけのわからないこと言ってるんだ?
しかもそんなレスが2つ続けてって・・・
ここはムーの投稿欄かよ
732デフォルトの名無しさん:2009/01/10(土) 23:33:00
ログインの必要なページをダウロードしたいんですけれどどうすればいいですか?

たとえば
ttp://www.toyokeizai.net/compsh/stockholder/CN/8306
733デフォルトの名無しさん:2009/01/10(土) 23:35:22
ログインすればいい
734デフォルトの名無しさん:2009/01/10(土) 23:36:05
>>733
予想通り
でもお前はいらない子
735デフォルトの名無しさん:2009/01/10(土) 23:38:00
それがわかってるなら、なぜ「ログインするにはどうすればいいのか?」へと考えが至らないのか。
736デフォルトの名無しさん:2009/01/10(土) 23:40:09
必要な情報をPOSTしてクッキー取得してそのクッキーを使ってアクセス
737デフォルトの名無しさん:2009/01/10(土) 23:40:38
いらない子はレスしなくてOK
738デフォルトの名無しさん:2009/01/10(土) 23:41:46
>>732
簡易WebBrowserとダウンロードボタン作って,ログイン後にボタンクリックすればいいんじゃない?
739デフォルトの名無しさん:2009/01/10(土) 23:41:54
>>736
神様ありがとうございます
ぐぐって勉強してみます

どうでもいいレスして喜んでる人はもうここにはレスしないように
740デフォルトの名無しさん:2009/01/10(土) 23:44:37
クッキーを使おうが使うまいが、ログインしていることには変わりなし。
741デフォルトの名無しさん:2009/01/10(土) 23:50:41
最近の難しいログインフォームは、基本的に>>738の方法。
JavaScriptの中にログイン用の塩が埋め込まれててエンコードしたり
しないといけないから、そんなもんブラウザでInvokeしたほうが
楽だべ。(というかそうじゃないと無理なものもある)
742デフォルトの名無しさん:2009/01/10(土) 23:52:37
しょせん HTTP のリクエスト。IE にできることなら他の方法でも可能。
743デフォルトの名無しさん:2009/01/11(日) 00:05:40
>>741
ログイン用の…エン?
言いたいことが分かるけどなぜに塩なのかが分からんw

>>742
capita破るプログラムを考えるより、人間に任せた方が楽というのもある
744デフォルトの名無しさん:2009/01/11(日) 00:10:36
>>743
salt
745デフォルトの名無しさん:2009/01/11(日) 00:13:25
> capita
言いたいことはわかるんだがアレンジが大胆すぎる
746デフォルトの名無しさん:2009/01/11(日) 00:18:14
capita とかは確かにその通りだけど、それは IE がやってることではなくて、
人間がやってることだろ。
747デフォルトの名無しさん:2009/01/11(日) 00:21:59
>732
ログ取れるプロキシ使うかやパケットキャプチャをしてブラウザからログオンしてみて
同じリクエスト順にGETやPOSTを投げるんだよ。
クッキーあたりに入っているセッションIDなどもサーバーから送られてくるのを使うんだよ。
どんなページもAjaxなページも基本的に同じようにやればいいんだよ。
このページは普通にPOSTを投げるだけで良さそうだけど。
748デフォルトの名無しさん:2009/01/11(日) 00:28:39
>>747>>741を理解してレスしてるのか?
749デフォルトの名無しさん:2009/01/11(日) 00:30:30
理解してないからそういう発言なんだろ。
750デフォルトの名無しさん:2009/01/11(日) 01:15:40
capitaってなに?画像認証みたいなやつ?
751デフォルトの名無しさん:2009/01/11(日) 01:41:46
動的にコントロールを削除するのってDisposeしかないの?
752デフォルトの名無しさん:2009/01/11(日) 02:01:45
イベントハンドラのオーバーロード追加できないの?
753デフォルトの名無しさん:2009/01/11(日) 02:10:19
DOMパーサとJSエンジンだけの小さくて簡単に使えるパッケージがあればいいんだがな

>>750
もしかして: captcha

>>751-752
日本語でおk
754デフォルトの名無しさん:2009/01/11(日) 07:39:53
>>711
サブフォルダの件、無事できました。
thanks!
755デフォルトの名無しさん:2009/01/11(日) 11:00:58
フォームアプリケーションで、アセンブリリソースを追加して画像を入れたとき、

Bitmap bmp = Resources1.image1;

みたいに取得したBitmapオブジェクトも解放するのは取得した側の責任ですよね?
756デフォルトの名無しさん:2009/01/11(日) 13:12:11
すみません

keydownイベントで、シフトキーを押すとAlt+Zキーを押したのと同等の処理をしたいのですがどうすれば良いのでしょうか?
757デフォルトの名無しさん:2009/01/11(日) 13:19:37
あなたは他人に何かを説明をする気はあるのかね?
758デフォルトの名無しさん:2009/01/11(日) 13:24:23
>>756
(1) Shiftキーが押されたかどうか判定し、(普通に可能)
(2) 押された場合は[Alt]+Zが押された場合と同じ処理をする

だけだろう。
逆に何が難しいのか説明して欲しいぐらいだ。
759デフォルトの名無しさん:2009/01/11(日) 15:50:24
>>755
そだよ
760デフォルトの名無しさん:2009/01/11(日) 17:02:52
foreachの一致について教えてください。
textBoxにappleをいれると、
string[] fruits = new [] {"apple", "banana", "orange"};
foreach(string fruit in fruits) {
if (textBox.Text.Contains(fruit)){MessageBox.Show(fruit + "です。");}
else {MessageBox.Show("一致しません。");}
}
だと、appleです。、一致しません、一致しません。と3回メッセージボックスが出ます。
これを、どれかに一致したときは、一致したメッセージをだし、どれにも一致しなかったら、1回だけ一致しなかったメッセージを出す、とするには、どうすればよいでしょう?
アドバイスお願いします。
761デフォルトの名無しさん:2009/01/11(日) 17:05:04
リファレンスのbreak文くらい読めと声を大にしていいたい
762デフォルトの名無しさん:2009/01/11(日) 17:09:49
>>761
それが、
if (textBox.Text.Contains(fruit)){MessageBox.Show(fruit + "です。");break;}
else {MessageBox.Show("一致しません。");break;}
とbreakしてみると、appleのときはappleです。と表示されてうまくいき、kiwiの場合も、一致しません。でうまくいくのですが、bananaのときにも一致しません。になってしまうのです。
763デフォルトの名無しさん:2009/01/11(日) 17:11:49
if(textbox...) {flg=true;break;}
...
if(flg) ...
764デフォルトの名無しさん:2009/01/11(日) 17:14:49
デバッガの使い方を先に覚えよう。ステップ実行すると全て解決するよ。
765デフォルトの名無しさん:2009/01/11(日) 17:46:25
アドバイスありがとうございます。
>>764
ステップインで1行ずつ実行して、bananaのときはelseに飛ぶことはわかったのですが、なぜ飛ぶのか(飛ばないようにしたいのに)わからないので、ぜんぜん解決しませんでした。
>>763
フラグを立てるのですか?
string[] fruits = new [] {"apple", "banana", "orange"};
bool flg = false;
foreach(string fruit in fruits) {
if (textBox.Text.Contains(fruit)){flg = true; break;
if (flg) {MessageBox.Show(fruit + "です。");}
else {MessageBox.Show("一致しません。");break;}
}
???
766デフォルトの名無しさん:2009/01/11(日) 17:49:53
string[] fruits = new [] {"apple", "banana", "orange"};
bool flg = false;
foreach(string fruit in fruits) {
if (textBox.Text.Contains(fruit)){
MessageBox.Show(fruit + "です。");
flg = true;
break;
}
}
if (!flg) {...}
全部言わんと分からんのか?
767デフォルトの名無しさん:2009/01/11(日) 17:53:11
if( Array.IndexOf<string>( fruits, textBox.Text ) != -1 )
{
 //ある
}
else
{
 //ない
}
768デフォルトの名無しさん:2009/01/11(日) 17:59:08
どうでもいいけど>>767の<string>って普通省略するよね
769デフォルトの名無しさん:2009/01/11(日) 18:07:42
>>768
好き好きでいいんじゃね。
省略できる型引数は省略しないと気が済まないお前や俺みたいなやつもいれば、
書かないと気が済まないやつ、まるでこだわらないやつもいるだろ。
770デフォルトの名無しさん:2009/01/11(日) 18:10:14
fxcopかなんかで確か
省略できない型引数は極力作るな
っていうガイドラインがあったな
771デフォルトの名無しさん:2009/01/11(日) 18:14:18
>>766
全部いっていただけるとうれしいです。
string[] fruits = new [] {"apple", "banana", "orange"};
bool flg = false;
foreach(string fruit in fruits) {
if (textBox.Text.Contains(fruit)){MessageBox.Show(fruit + "です。");
flg = true;
break;
}
if (!flg) {MessageBox.Show("一致しません。");break;}
}
これで、bananaのときは、一致しません。で終わってしまいます。
if (!flg) {MessageBox.Show("一致しません。");}
とすると、一致しません、bananaです。で、まだできてないし…。
772デフォルトの名無しさん:2009/01/11(日) 18:22:58
var result = fruits.FirstOrDefault(fruit => textBox.Text.Contains(fruit));
if(result != null)
MessageBox.Show(fruit + "です。");
else
MessageBox.Show("一致しません。");

こんなんとか
773デフォルトの名無しさん:2009/01/11(日) 18:25:23
>>772
そういうときはFirstOrDefaultよりもAnyを使う
774デフォルトの名無しさん:2009/01/11(日) 18:27:10
あー結果を使うのか
撤回
775デフォルトの名無しさん:2009/01/11(日) 18:27:49
間違えた

var result = fruits.FirstOrDefault(fruit => textBox.Text.Contains(fruit));
if(result != null)
MessageBox.Show(result + "です。");
else
MessageBox.Show("一致しません。");

こうか
776デフォルトの名無しさん:2009/01/11(日) 18:36:11
もしかして複数の果物もありなのか

var results = fruits.Where(fruit => textBox.Text.Contains(fruit)).ToArray();

if(results.Length == 0)
 MessageBox.Show("一致しません。");
else foreach(var fruit in results)
 MessageBox.Show(fruit + "です。");
777デフォルトの名無しさん:2009/01/11(日) 19:11:19
アドバイスありがとうございます!
>>767
配列のなかを検索するには、こういう書き方もあるんですね。
今回は、textBoxがpineappleのときもappleに一致させたいので、使えない感じですが、勉強になりました。
>>775
できました!
感謝します。
778デフォルトの名無しさん:2009/01/11(日) 19:18:57
string[] fruits = new [] {"apple", "banana", "orange"};
bool flg = false;
foreach(string fruit in fruits) {
 if (textBox.Text.Contains(fruit)){
  MessageBox.Show(fruit + "です。");
  flg = true;
  break;
 }
}
if (!flg) {MessageBox.Show("一致しません。");}

こういう書き方も出来んといかんよ
779デフォルトの名無しさん:2009/01/11(日) 20:30:28
>>775
Array.Find

>>776
Array.FindAll
780デフォルトの名無しさん:2009/01/11(日) 20:32:49
>>777>>775の方法を理解してないだろうな

そういえばどういうときにどんなLINQを使えば楽になるのかというのがいまいち分からない
ここ見てると、ああなるほど と思うときがあるんだが… 頭固いからかな?
781デフォルトの名無しさん:2009/01/11(日) 20:47:33
>>780
単純にそれはコレクション操作することが少ないんじゃない?
782デフォルトの名無しさん:2009/01/11(日) 21:14:23
コレクションというか SQL とかの集合演算に慣れてないだけと見た
783デフォルトの名無しさん:2009/01/11(日) 22:55:01
>>778
ありがとうございます。
最初に書こうと思って書けなかったのはこれでした。
フラグとbreakについて復習してみようと思います。
>>780
おっしゃるとおり。778のフラグとbreakの方法なら理解できるのですが、775の方法は、動くことはわかるものの、まだマジカルです。
でもまあ理解はそのうちついてくると思ってます。
784デフォルトの名無しさん:2009/01/12(月) 11:59:24
>>755
の便乗質問なんですが、Paintイベントなどで

e.DrawImage( Resources1.image1, ... );

なんてやると描画の度に確実にリークしてくってことですかね
785デフォルトの名無しさん:2009/01/12(月) 12:07:09
いずれは解放されるからリークとは言えない……こともないか
GC.AddMemoryPressureとかやってないみたいだし
786デフォルトの名無しさん:2009/01/12(月) 16:13:43
staticプロパティだからキャッシュするのかと思ったら毎回インスタンス作るんだね
Imageなんか勝手に全部キャッシュされたらそれこそリークだけど
それならプロパティにするのは不自然だと思う
787デフォルトの名無しさん:2009/01/12(月) 16:21:16
ResourceManager.GetObjectを使ってるからこのレベルで再利用されているはず。
Win32のリソースの場合ははじめからそこにあるといったイメージになるから
開放しないのが普通なのだが、CLRのリソースはわかんね。
788デフォルトの名無しさん:2009/01/13(火) 00:06:05
ifの条件がふたつあり、Aの場合もBの場合もおなじ処理をする場合、ifのあとどう書けばいいでしょう?
if (A) {//処理}
if (B) {//処理}
と書くと、重複が多いのでなんとかしたいです。
ご指導ください。
789デフォルトの名無しさん:2009/01/13(火) 00:10:50
if(A || B) {//処理}
790デフォルトの名無しさん:2009/01/13(火) 00:44:34
else if じゃなくて if だから、|| では繋げないのでは。
(A かつ B の時は >>788 だと2度処理されるが、>>789 では1度しか処理されない)
まあ、>>788 の書き間違いかもしれないが。
もし書き間違いでないとしたら、処理を関数化することね。
791デフォルトの名無しさん:2009/01/13(火) 00:52:45
その発想はなかったw
では

int jobCount = 0;
if (A) ++jobCount;
if (B) ++jobCount;
for (int i = 0; i < jobCount; i++)
{
//処理
}
792デフォルトの名無しさん:2009/01/13(火) 01:10:18
なんで、そんな斜めな回答ばっかりするんだよ。

if (A) {
a = doSomething(α);
}
if (B) {
b = doSomething(β);
}

だろ。初心者用だし、普通に考えて。
793デフォルトの名無しさん:2009/01/13(火) 01:37:16
private void DoMyEvent()
{
    //処理
}

-----------------------------------

if (A) {DoMyEvent();}
if (B) {DoMyEvent();}
794デフォルトの名無しさん:2009/01/13(火) 01:44:38
君ら命名下手やね
795デフォルトの名無しさん:2009/01/13(火) 01:48:21
ここはC#初心者用だと思ってたが、プログラミング初心者用だったのか
796デフォルトの名無しさん:2009/01/13(火) 02:10:13
LINQつかえよカスども
797デフォルトの名無しさん:2009/01/13(火) 02:28:03
プロフェッショナル用に帰れ
798デフォルトの名無しさん:2009/01/13(火) 11:09:24
コンソールアプリケーションでログイン画面を作っているのですが
画面に表示しないで、パスワードを入力してもらうにはどうすればいいですか?

login: userid
password: **** (若しくは完全に非表示)
というような感じにしたいです。

Console.ReadKey(true)をEnterがあるまで繰り返すのが一般的ですか?
それとも、パスワード入力用のメソッドとかありますか?
799デフォルトの名無しさん:2009/01/13(火) 15:39:39
長さの同じbyte[] の内容比較って byte[] == byte[] ではだめなのでしょうか?
800デフォルトの名無しさん:2009/01/13(火) 15:43:27
メソッドの引数で即値しかとれないようにする方法はありませんか?
801デフォルトの名無しさん:2009/01/13(火) 15:46:16
>>799
駄目
C#3.5ならSequenceEqualとか使えるけど
>>800
意味が分からんがenumで何とかならんか?
802デフォルトの名無しさん:2009/01/13(火) 15:49:44
>>800
無料。そもそも何のためにそんなことをしたいんだ?
803デフォルトの名無しさん:2009/01/13(火) 15:59:29
>>801
そうですか、ありがとう。
迂回のつもりでBitConverterにしてから比較していたのですが、
とりあえずこのまま行こうと思います。
byte[].SequenceEqual(byte[])で試してみたらfalseになりました。
使い方を調べてから出直してきます。
804デフォルトの名無しさん:2009/01/13(火) 18:16:24
Visual BasicからC#に変える利点ってどのようなものがありますか?
805デフォルトの名無しさん:2009/01/13(火) 18:20:54
>>804
VB6かVB.netかで違う

結論としてはほぼ一緒だが。
806デフォルトの名無しさん:2009/01/13(火) 18:25:44
VB.netなら全然違うんじゃないか?新機能を除けば出来る事はほとんど同じだし
807デフォルトの名無しさん:2009/01/13(火) 20:13:22
>>798
ReadKey回すしかないんじゃない?こんな感じで。

StringBuilder sb = new StringBuilder();
ConsoleKeyInfo cki;
Console.Write("Password: ");
do
{
while (!Console.KeyAvailable)
{
Thread.Sleep(10);
}
cki = Console.ReadKey(true);
if (cki.KeyChar != '\r' && cki.KeyChar != 0)
{
sb.Append(cki.KeyChar);
Console.Write("*");
}
} while (cki.KeyChar != '\r');
Console.WriteLine("\nYour Password is: " + sb.ToString());

808デフォルトの名無しさん:2009/01/13(火) 20:20:44
>>789-793
ありがとうございます。
if (A || B)でできました。
処理をメソッド化するのがベターでしょうか。
こちらも試してみました。
状況に応じて使い分けたいと思います。
809デフォルトの名無しさん:2009/01/13(火) 20:23:26
>>808
大丈夫かよ……
if( A || B )
の場合、AがtrueだとBは評価されないってのは理解してるよな……?
810デフォルトの名無しさん:2009/01/13(火) 21:03:00
質問です。
2009/01/13
という文字列から、
2009/01/20
2009/01/27
2009/02/03
……
という文字列を得たいと考えています。
ToString()みたいな感じでToDateTimeしてAddDays(+7)とかできないかと考えたのですが、違うみたいです。
どう考えたらいいですか?
811デフォルトの名無しさん:2009/01/13(火) 21:04:16
こいつからはカレンダーのにおいがするぜ!間違いねえ!
812デフォルトの名無しさん:2009/01/13(火) 21:06:58
>>810
君が間違いを犯してると思う
全コードのせてみ?
813デフォルトの名無しさん:2009/01/13(火) 21:12:00
>>811
え…。カレンダーってなんかまずいっすか?
コンソールで
makecalendar.exe 2009/01/13 21:00 メイちゃんの執事
と入力して結果として、
2009/01/13 21:00 メイちゃんの執事
2009/01/20 21:00 メイちゃんの執事
2009/01/27 21:00 メイちゃんの執事
2009/02/03 21:00 メイちゃんの執事
……
というファイルを作りたいと思っています。

>>812
いまコードは次のとおりです。
string[] args = Environment.GetCommandLineArgs();
File.AppendAllText("plan.txt" , args[1] + "\t" + args[2] + "\t" + args[3] + "\r\n", Encoding.Default);
でこのあとの部分で、stringを日付にして、AddDaysを12回くり返す。forで。と考えました。
814デフォルトの名無しさん:2009/01/13(火) 21:14:07
おい肝心の
> でこのあとの部分で、stringを日付にして、AddDaysを12回くり返す。forで。と考えました。
はどこいった
815デフォルトの名無しさん:2009/01/13(火) 21:14:40
なんで日本語で書くかな〜
全部そのまま載せろ、ドアホ
816デフォルトの名無しさん:2009/01/13(火) 21:15:37
ドアフォ
817デフォルトの名無しさん:2009/01/13(火) 21:18:09
現在、あるExcelファイルを予め開いておき、
そのExcelからC#で作ったプログラムを起動して処理をさせる事を
しています。
そのときC#で行った処理の結果を先ほどの既に開いている
Excelファイルのあるシートのあるセルに
文字列として書きこみたいのですがどうすればよいでしょうか?
Excel.Openだと新しくファイルを開こうとするので
そうではなくすでに開いているExcelを操作したいのです。

どなたかご教授お願いします。。
818デフォルトの名無しさん:2009/01/13(火) 21:23:42
>>813
ヘルプの「解説」の1行目読んで。
819デフォルトの名無しさん:2009/01/13(火) 21:33:45
>>814
いや、その肝心のところで躓いていて。
>>815
コードこれでぜんぶです〜。
まず日本語でやりたいことを忘れないようにメモしたところです。
これから日付をクリアしたら、forの使い方を調べて…。
820デフォルトの名無しさん:2009/01/13(火) 21:36:21
>>819
何を言いたいのかよくわからんがプログラム書いてからこい
821デフォルトの名無しさん:2009/01/13(火) 21:45:20
正規表現でぐぐればいいんじゃね?
822デフォルトの名無しさん:2009/01/13(火) 21:59:09
forのところは次のようになりました。
for (int i=2; i<13; i++) {
File.AppendAllText("plan.txt" , (i) + "\t" + args[2] + "\t" + args[3] + "\r\n", Encoding.Default);
}
これで最初の質問のargs[1]の日付を文字から日付にする方法をアドバイスお願いします。
823デフォルトの名無しさん:2009/01/13(火) 22:01:18
DateTime.Parse
824デフォルトの名無しさん:2009/01/13(火) 22:04:10
>>819
日付の計算の仕方がわかったら、本当にforの使い方を調べるんだな。
おじさんとの約束だぞ。

stringをDateTimeに変換するのは、 DateTime.Parse() を使う。

string s = "2009/01/13 21:00";
DateTime dt1 = DateTime.Parse(s);

Parse()というメソッドはよく覚えておけ。文字列表現を解釈するために、いろんなクラスに
存在しているからな。目を皿のようにしてMSDNライブラリを渉猟するがいい。
次は、「DateTime.AddDays()が機能しません」と言って泣きついてくるような気がするが、
それはそのとき答えよう。
825デフォルトの名無しさん:2009/01/13(火) 22:11:16
その前にFormatExceptionが出る気がする
826824:2009/01/13(火) 22:13:55
>>825
大丈夫、確認はしているさ。
827デフォルトの名無しさん:2009/01/13(火) 22:16:54
>>824
なんか知らんが、あんた気色悪いよ。
いや本気で。
828デフォルトの名無しさん:2009/01/13(火) 22:19:48
DateTimeに変換とか言う以前に、コマンドライン引数を""で囲わないとだめなんじゃないか?
829デフォルトの名無しさん:2009/01/13(火) 22:41:44
こんなんかな。

DateTime startDate = DateTime.Parse(args[ 1 ]);
using (StreamWriter writer = new StreamWriter("plan.txt"))
{
  for (int i = 0; i < 13; ++i)
  {
    DateTime onAirDate = startDate.AddDays(i * 7);
    writer.WriteLine("{0:yyyy/MM/dd}\t{1}\t{2}", onAirDate, args[ 2 ], args[ 3 ]);
  }
}

次はだれかLINQを使う例を頼む。
830デフォルトの名無しさん:2009/01/13(火) 22:42:11
>>823
ありがとうございます。
>>824
詳しくありがとうございます。
できました。
831デフォルトの名無しさん:2009/01/13(火) 22:46:28
ああ、書いちゃった
今夜の楽しみがひとつ減った
832デフォルトの名無しさん:2009/01/13(火) 22:46:33
>>830
できたプログラムキボンヌ。
833デフォルトの名無しさん:2009/01/14(水) 00:25:47
>>832
いま、こんな感じです。
// 周期と初期値は今後対応予定。
// 日付 時刻 項目 初期値 周期
// 予定の表記は、「2009/01/20 21:00 メイちゃんの執事 2 7」
DateTime dt;
DateTime.TryParse(args[1].ToString() + " " + args[2].ToString(), out dt);
for (int i=1; i<13; i++) {
File.AppendAllText("plan.txt" , dt.AddDays(+7*(i)).ToString().Replace(" ","\t").Replace("00:00","00") + "\t" + args[3] + (i) + "\r\n", Encoding.Default);
}
834デフォルトの名無しさん:2009/01/14(水) 00:29:50
TryParseの戻り値放置はダメだろ
835デフォルトの名無しさん:2009/01/14(水) 00:36:46
829と見較べて勉強してました。
>>834
え!? なんですかそれ…。
836デフォルトの名無しさん:2009/01/14(水) 00:37:32
あとはとりあえず
・DateTimeは時間も扱えるのでまとめてParseした方がいい。
・DateTimeを文字列に変換する際には書式指定できる。
 ヘルプで「日付と時刻の書式指定文字列」を調べてみる。
837デフォルトの名無しさん:2009/01/14(水) 00:43:05
>>835
Try○○パターンは常にif (Try○○(out result)) { 成功したとき } else { 失敗したとき }
の形で使うんだよ
失敗したときはresultの値は無意味なので使っちゃいけないお約束
838デフォルトの名無しさん:2009/01/14(水) 01:06:54
整理しました。こんなんでいかがでしょう。
DateTime startDate = DateTime.Parse(args[1] + " " + args[2]);
for (int i=1; i<13; i++) {
File.AppendAllText("plan.txt" , startDate.AddDays(+7*(i)).ToString("yyyy/MM/dd/\tHH:mm") + "\t" + args[3] + (i) + "\r\n", Encoding.Default);
}
839デフォルトの名無しさん:2009/01/14(水) 01:10:27
for(int i=0;...な
840デフォルトの名無しさん:2009/01/14(水) 01:17:41
>>837
失敗したときの値は普通は default(T) だから(値はMSDNに明記されてる)、
変換できない文字列は default(T) とみなすということも有り得る
841651:2009/01/14(水) 01:56:17
自己解決しました。
EditingControlWantsInputKeyメソッドの
switch文のdefaultの時に
return !dataGridViewWantsInputKey;
を返したら無事入力できるようになりました。

ttp://windowsclient.net/downloads/folders/applications/default.aspx
のDataGridViewを参考にしました。
842デフォルトの名無しさん:2009/01/14(水) 10:08:59
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ こいつ まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
843デフォルトの名無しさん:2009/01/14(水) 10:56:21
ToolStripMenuとContextMenuで共通のものがあるですが
同じアイテムを使う事ってできないんでしょうか?
844デフォルトの名無しさん:2009/01/14(水) 10:58:16
ContextMenuStrip使えばいいよ
845デフォルトの名無しさん:2009/01/14(水) 11:07:00
たぶんひとつのToolStripMenuItemを使い回したいということなんだろうけど、
違う親にAddするともとからはRemoveされる仕様です
846デフォルトの名無しさん:2009/01/14(水) 13:09:14
>>807
サンクス。だが遅かったな
俺が寝てる間(=意識がもうろうとしている状態)に小人さんが作ってくれたんだぜw 俺の小人さん乙

Console.ReadKey(true).KeyChar == 0 の場合は考えてなかったな
まあいいや
847デフォルトの名無しさん:2009/01/14(水) 16:18:02
昨日はいろいろありがとうございました。
周期と初期値に対応したつもりですが、周期と初期値の引数がない場合になにも処理されないという症状に困っています。
アドバイスいただければと。
引数つきでデバッグするときにはどうしたらよいんでしょう?

//予定の表記は「2009/01/20 21:00 メイちゃんの執事 2 7」
//日付 時刻 項目 初期値 周期
DateTime startDate = DateTime.Parse(args[1] + " " + args[2]);
int defaultValue = 1;
if (args[4] != null) {defaultValue = Int32.Parse(args[4]);}
else if (args[4] == null) {}
int incrementDays = 7;
if (args[5] != null) {incrementDays = Int32.Parse(args[5]);}
else if (args[5] == null) {}
for (int i=defaultValue; i<13; i++) {
string writefolderDate = (startDate.AddDays(i*incrementDays).ToString("yyyy/yyyyMM/yyyy_MMdd/"));
File.AppendAllText("plan.txt" , startDate.AddDays(i*incrementDays).ToString("yyyy/MM/dd\tHH:mm") + "\t" + args[3] + i + "\r\n", Encoding.Default);
848デフォルトの名無しさん:2009/01/14(水) 16:26:03
>>847
もうちょっと機能を分割したほうがいいが、、
引数付きでデバッグ開始したいなら、プロジェクトのプロパティのデバッグのとこに
開始オプション-コマンドライン引数とかあるが。
849デフォルトの名無しさん:2009/01/14(水) 16:26:06
キモい。
850デフォルトの名無しさん:2009/01/14(水) 16:50:45
args[4] == null
って引数足りないときはArgumentOutOfRangeExceptionだぞ
Lengthプロパティで確認
851デフォルトの名無しさん:2009/01/14(水) 17:07:33
>>848
ありがとうございます。
>>850
ありがとうございます。
int defaultValue = 1;
if (args.Length >= 5) {defaultValue = Int32.Parse(args[4]);}
int incrementDays = 7;
if (args.Length >= 6) {incrementDays = Int32.Parse(args[5]);}
でできたみたいです。
852デフォルトの名無しさん:2009/01/14(水) 17:12:20
質問があります。
周期的に行う予定で、雑誌の発売日などの場合、2週目と4週目の火曜日、というようなことがあるのですが、C#で2週目の火曜日、というのはどう書くものなのですか?
853デフォルトの名無しさん:2009/01/14(水) 17:24:06
>>851
普通にメソッド化しろよ。
もう遅いとは思うが
854デフォルトの名無しさん:2009/01/14(水) 17:48:37
>>853
遅いってことはないんですけど、普通のメソッド化って、どんなふうにするものなのですか?
メソッド化って、自分ではまだしたことがなく、リファクタ-メソッドの抽出でメソッドを作ったことがあるくらいです。
この場合、どこをどうメソッドにするものなのでしょう?
855デフォルトの名無しさん:2009/01/14(水) 18:11:35
>>852
1日が何曜日かしらべて自前で計算したらよかんべ
856デフォルトの名無しさん:2009/01/14(水) 18:14:45
>>852
そういうのはまず条件を整理するんだよ。
で、何週目かは7で割ればいいし、
DateTime 使うんなら、DayOfWeekで曜日がわかる。
857デフォルトの名無しさん:2009/01/14(水) 18:28:11
>>854
やってることを分けて考えれば自然に出てくる
たとえ一回しか使われない処理でも,
はっきりとした機能単位でメソッドに分けられていたら見通しが良くなる
858デフォルトの名無しさん:2009/01/14(水) 18:34:09
>>852
今月の場合だと

int i = Convert.ToInt32(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).DayOfWeek);
int n = (7 - i) + 3;

任意の月だとDateTime.Now.Monthを変えればOK。
859デフォルトの名無しさん:2009/01/14(水) 18:46:57
>>852
因みに、ある月の「2週目の火曜日」と「第2火曜日」は違うと言っておく
雑誌なんかは普通は後者だと思う。前者も無いとは言い切れないが
860デフォルトの名無しさん:2009/01/14(水) 18:50:42
リファクタ-メソッドの抽出なんて初めて知ったw
すごいなこれw
861デフォルトの名無しさん:2009/01/14(水) 18:56:57
便利ではあるが、抽出の仕方を上手い事誘導するにはコツがいる

void NewMethod(ref int a, ref int b, out int c);

もう、あほかとw
862デフォルトの名無しさん:2009/01/14(水) 18:59:16
>>859
確かにw
第二火曜日の場合

int i = Convert.ToInt32(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).DayOfWeek);
int n = (i > 2) ? (7 - i) + 3 + 7 : (7 - i) + 3;
863デフォルトの名無しさん:2009/01/14(水) 19:06:13
>>856
ありがとうございます。
う〜む。なんかこんなんなりました…。
割り算苦手…。
string[] targetDay = {"日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"};
string targetOnlyDate = DateTime.Now.ToString("dd");
DateTime targetDate = DateTime.Now;
string stringTargetDate = DateTime.Now.ToString("yyyy年MM月dd日");
if (Int32.Parse(targetOnlyDate)<=7) {MessageBox.Show(stringTargetDate + "は第1" + targetDay[(int)targetDate.DayOfWeek]);}
else if (Int32.Parse(targetOnlyDate)<=14) {MessageBox.Show(stringTargetDate + "は第2" + targetDay[(int)targetDate.DayOfWeek]);}
else if (Int32.Parse(targetOnlyDate)<=21) {MessageBox.Show(stringTargetDate + "は第3" + targetDay[(int)targetDate.DayOfWeek]);}
else if (Int32.Parse(targetOnlyDate)<=28) {MessageBox.Show(stringTargetDate + "は第4" + targetDay[(int)targetDate.DayOfWeek]);}
else {MessageBox.Show(stringTargetDate + "は第5" + targetDay[(int)targetDate.DayOfWeek]);}

>>858
うっ。ありがとうございます。四苦八苦しているうちに…。
すごいスマートです…。

>>857、860
メソッド化については、最近必要性がわかってきたものの、もうちょっと頭を整理してから考えます。
864デフォルトの名無しさん:2009/01/14(水) 19:13:07
>>863
これはひどい
865デフォルトの名無しさん:2009/01/14(水) 19:18:44
中学生か?
866デフォルトの名無しさん:2009/01/14(水) 19:21:00
targetOnlyDateいらないだろ
しかもなぜかstringで毎回Int32.Parse…
867デフォルトの名無しさん:2009/01/14(水) 19:38:39
C#じゃなくてアルゴリズムだよなこれは・・・
868デフォルトの名無しさん:2009/01/14(水) 19:49:06
こういう嘘くさいメソッドを捏造してやればおk

public static int 第nx曜日の日付を調べる(int n, DayOfWeek x, DayOfWeek firstDay)
{
int firstDateX = x - firstDay + 1;
if (firstDateX <= 0)
firstDateX += 7;
return firstDateX + 7 * (n - 1);
}
869デフォルトの名無しさん:2009/01/14(水) 20:25:29
>>863
if a b の人じゃないのwww
870デフォルトの名無しさん:2009/01/14(水) 21:17:42
852は2週目の火曜日の何の型を知りたかったのだろうか
871デフォルトの名無しさん:2009/01/14(水) 22:21:03
今夜も酒がうまい
872デフォルトの名無しさん:2009/01/15(木) 04:12:59
privateとかpublicとかの識別子が付いてないクラスのアクセスレベルはなんなの?
873デフォルトの名無しさん:2009/01/15(木) 04:32:35
874デフォルトの名無しさん:2009/01/15(木) 04:41:06
わかりましたありがとう
875デフォルトの名無しさん:2009/01/15(木) 16:53:43
>>868
第nx曜日の日付を調べる()
を呼び出すときの引数を教えてください。
たとえば第2火曜日の日付を求めるには?
第nx曜日の日付を調べる(2, "火", "木")
876デフォルトの名無しさん:2009/01/15(木) 17:04:18
DayOfWeek型だって書いてるだろ
877デフォルトの名無しさん:2009/01/15(木) 17:37:22
>>875
>>862を発展させたのが>>868なんじゃないの?
両方を見ればどうするか分かりそうだけど・・・。
878デフォルトの名無しさん:2009/01/15(木) 17:49:32
なんでも文字列でやりたがるお人じゃのぅ
879デフォルトの名無しさん:2009/01/15(木) 18:26:49
DayOfWeek列挙体でなくて?
ほとんどstringしか使ったことがないので、Intとかよくわからないのです。
両方見ても、ぜんぜん見当がつかないです。
880デフォルトの名無しさん:2009/01/15(木) 18:39:26
intがよくわからないんじゃコンピュータさんとお話はできないな
881デフォルトの名無しさん:2009/01/15(木) 18:41:27
機械語でお話できればok
882デフォルトの名無しさん:2009/01/15(木) 18:48:29
IntPtr型ってIntの参照型ですか?
それともアドレス?
883デフォルトの名無しさん:2009/01/15(木) 18:55:16
インテリセンスで出るだろそれくらい・・・
884デフォルトの名無しさん:2009/01/15(木) 19:50:44
キーワードとか予約語が分かりません、てレベルは来なくていいよ
885デフォルトの名無しさん:2009/01/15(木) 19:55:40
>>882
ポインタをはじめとした,プラットフォームによってサイズが変わる整数値を格納するための型
886デフォルトの名無しさん:2009/01/15(木) 19:57:34
そのプラットフォームにおけるポインタのサイズと同じサイズの整数型
と言った方がいいかもしれない
887デフォルトの名無しさん:2009/01/15(木) 20:05:15
ありがとうございます。
IntPtrの仕様書(?)説明ではよく分からなかったので質問しました。
BitmapData.Scan0というのがよく分からなかったので
888デフォルトの名無しさん:2009/01/15(木) 20:08:41
C#は変数の型を厳密に区別する堅牢な言語と最初に教わった気がする。
var世代にはもう必要なくなったのかも・・。
889デフォルトの名無しさん:2009/01/15(木) 20:17:45
Scan0はポインタそのもの
void*とか公開するのはさすがにまずいのでそのかわりにIntPtr

値はやっぱり生のアドレス
890デフォルトの名無しさん:2009/01/15(木) 20:21:25
>>887
要は、

実態: ただの整数の別名
用途: ハンドルとかポインタとか、普通の整数のように扱われては困る値を扱うためのもの

ってことじゃないの?俺はそう思ってるけど。
ただ、整数と「意味的に」区別するために導入したはずのIntPtrなのに、
結局のところ「意味的に」全然異なるいろんなハンドルやポインタの値を
扱うんじゃ、考え方として一貫してないしあんまり意味ないなー、と思うのは俺だけ?
891デフォルトの名無しさん:2009/01/15(木) 20:23:07
>>888
C#は静的な強い型付けの言語だけど、それと型推論は別の概念。
892デフォルトの名無しさん:2009/01/15(木) 20:27:22
>>890
ハンドルでもいいんだよ
要は32ビット環境では32ビット,64ビット環境では64ビット環境になるような値に対して使う
893デフォルトの名無しさん:2009/01/15(木) 20:30:21
size_tのマーシャリングにもIntPtr使ったりする
894デフォルトの名無しさん:2009/01/15(木) 20:31:10
環境によってビット数を変える必要がある整数に対して使うと言うことですね。
ありがとうございます。
(Scan0以外で多分当分使わないだろうな…)
895デフォルトの名無しさん:2009/01/15(木) 20:33:13
サイズの基準がポインタっていうだけのことだな
だからIntPtrという名前なんだろう
896デフォルトの名無しさん:2009/01/15(木) 20:44:02
算術演算できないのに整数型って呼んでいいの?
897デフォルトの名無しさん:2009/01/15(木) 20:47:03
算術演算には型のサイズが必要だからな
898デフォルトの名無しさん:2009/01/15(木) 20:52:29
ポインタのサイズは一定だから、関係ないだろ。
899デフォルトの名無しさん:2009/01/15(木) 21:05:49
>>896
それはbyte型に対する当て付けか
900デフォルトの名無しさん:2009/01/15(木) 21:17:01
>>894
いやだから、意味的な重点は「フツーの整数とは違うよ」っていうことにあって、
Cのintみたいに環境で大きさが変わるっていうのはむしろそう重要なことではないかと。

もちろんポインタを扱う場合には重要な特徴ではあるんだけど。
901デフォルトの名無しさん:2009/01/15(木) 21:28:29
少なくともIntPtrていう名前は
Int32,Int64等に対応して"Int"+(サイズ)と理解していいのかなあ
902デフォルトの名無しさん:2009/01/15(木) 21:35:18
IntPtrはIntPtrだろ
無理に何かにあてはめることは無い
903デフォルトの名無しさん:2009/01/15(木) 21:42:58
>>900
う〜ん
何となくは分かるんですが…
904デフォルトの名無しさん:2009/01/15(木) 21:47:07
>>893
C#コードで完結するならUIntPtr使いたいな。
905デフォルトの名無しさん:2009/01/15(木) 23:15:11
C#をつかってデータベースファイル(*.mdf)を扱うシステムを作ろうとしています。
質問をよろしくお願いします。
次の各項目について、方法は長くなってしまうでしょうから、可能なのかどうかだけでも教えてください。

(a) exeファイルになってからSQLServerがインストールされていないPCで使用したい
(b) mdfファイルとの接続を、メイン実行ファイル自身(exeファイル)からの相対パスで指定したい

以上2点ですが、可能なんでしょうか?
906デフォルトの名無しさん:2009/01/15(木) 23:20:10
ホイールでスクロールできるようにするにはどうすればいいですか?
907デフォルトの名無しさん:2009/01/15(木) 23:26:00
>>905
a. 無理。Compact ならいけるかも。調べてみれ
b. いけるはず
908デフォルトの名無しさん:2009/01/15(木) 23:46:02
>>906
なにをスクロールさせたいんだ?
おれたちゃお前のお母ちゃんじゃねえんだ
出直しな
909デフォルトの名無しさん:2009/01/15(木) 23:51:56
FormつくってそれにScrollBars = ScrollBars.VerticalってやったDataGridViewを
貼りつけたんだがホイールでスクロールしてくれない
どうすればいい?
910デフォルトの名無しさん:2009/01/15(木) 23:56:11
WM_SCROLL でも引っかければ?
911デフォルトの名無しさん:2009/01/15(木) 23:56:31
DataGridView..::.ScrollBars プロパティ
解説
このプロパティの値に関係なく、スクロール バーは必要な場合にだけ表示されます。
スクロール バーを表示しないようにするには、このプロパティを使用します。(後略)

DataGridViewに表示しきれないほどRowを追加すりゃいいんじゃね?
912デフォルトの名無しさん:2009/01/16(金) 00:00:22
スクロールバーはでてるんすよ
バーをつままないとスクロールしてくれない
ホイールでころころっとできんものかな、と

WM_SCROLL??なにそれ??
現在グーグルとにらめっこ中
支援求む
913デフォルトの名無しさん:2009/01/16(金) 00:02:37
あー。ごめん。WM_MOUSEWHEEL だったかも。
914デフォルトの名無しさん:2009/01/16(金) 00:02:52
ことわる
915デフォルトの名無しさん:2009/01/16(金) 00:20:29
フォーカスをDataGridViewに移したらいいんじゃね
916デフォルトの名無しさん:2009/01/16(金) 00:25:19
ごめん、できてたw
917デフォルトの名無しさん:2009/01/16(金) 00:54:16
>>912
学生さんだね。
社会に出ればわかるけど冤罪も罪のうち、疑わしきは罰するってのは法治国家の不文律だよ。
918デフォルトの名無しさん:2009/01/16(金) 01:07:24
どこの誤爆だw
919905:2009/01/16(金) 07:38:09
>>907
ありがとうございます。
相対パスは調べてやってみます。
920デフォルトの名無しさん:2009/01/16(金) 09:46:27
教えてください。

別のプロジェクトに含まれているフォームをコピーして使いたいのですが
インポートするにはどうすればいいですか?

お願いします。
921デフォルトの名無しさん:2009/01/16(金) 10:02:27
そっちのプロジェクトでそのフォームクラスがpublicになってる前提で。
そのexeかdllを参照に追加
922デフォルトの名無しさん:2009/01/16(金) 10:04:59
そりゅーしょんえくすぷろーらにコピペすりゃいい
923デフォルトの名無しさん:2009/01/16(金) 10:15:24
920です。

>>920-921
ありがとうございました。
ガチャガチャやってるうちにできました。

ソリューションエクスプローラ上で右クリック-追加-既存の項目

で出来ました。
追加項目の選択でform1.csだけを選択しただけで、ファイル的には
form1.csとForm1.Designer.csとForm1.resxの三つが現プロジェクトのフォルダに追加されました。
924デフォルトの名無しさん:2009/01/16(金) 13:07:17
今度からスレ違いは駄目だよボクちゃん
925デフォルトの名無しさん:2009/01/16(金) 14:01:38
ToolTipのToolTipIconプロパティのプロパティウィンドウでの説明文間違ってるよね?@SP1
926デフォルトの名無しさん:2009/01/16(金) 17:55:51
質問です。
ショートカットの.lnkからフルパスを取得するにはどうしたらよいでしょう?
927デフォルトの名無しさん:2009/01/16(金) 18:01:14
IShellLinkW、ShellLinkObject,
System.Runtime.InteropServices.ComTypes.IPersistFile

あたりでぐぐれ
928デフォルトの名無しさん:2009/01/16(金) 18:29:19
>>927
thanks
929デフォルトの名無しさん:2009/01/16(金) 19:25:29
質問です。
リフレクションで、あるオブジェクトがIEnumerable<T>の実装クラスか
判定したいんですが、ジェネリッククラスでこれをやるにはどうすればいいんでしょう。
930デフォルトの名無しさん:2009/01/16(金) 19:40:26
typeof(IEnumerable<T>).IsAssignableFrom(type);

てか、is使ったほうが早い
931デフォルトの名無しさん:2009/01/16(金) 19:50:34
ご回答ありがとうございます。

要するに、渡されたオブジェクトが配列かコレクションだったら foreach で中身を取り出したいのですが、
そのために、型引数 T がどんな型の場合でもmatchできるようにしたいのです。

質問が悪くて申し訳ありません。もしご存知でしたら教えてください。
932デフォルトの名無しさん:2009/01/16(金) 19:54:55
どんなシーンで必要なのかわからん
Tが決まってるならIEnumerable<T>にasすればいいし
Tが決まらないならIEnumerableにasしてobjectとして扱えば十分だろ
933デフォルトの名無しさん:2009/01/16(金) 20:06:20
>>932
いま、手元に開発環境がないので試せないんですが、
IEnumerable<T>には、IEnumerableだとマッチできないみたいです(総称型じゃないから?)。

用途はといいますと、javaでいうcommons-langのToStringBuilder的なものを自力で実装する必要があって、
配列やコレクションの中身も展開したいな、と。
934デフォルトの名無しさん:2009/01/16(金) 20:07:53
だからIEnumerableとして扱えばいいだろ
IEnumerable<T>を実装している型のオブジェクトなら例外なく絶対に間違いなくIEnumerableとして扱える
935デフォルトの名無しさん:2009/01/16(金) 20:12:21
IEnumeratorとIEnumerableの違いがわからん
936デフォルトの名無しさん:2009/01/16(金) 20:12:35
ありがとうございます、試してみます。
937デフォルトの名無しさん:2009/01/16(金) 20:19:46
>>935
IEnumerableはIEnumeratorのファクトリ
938デフォルトの名無しさん:2009/01/16(金) 20:21:49
>>935
列挙処理にはどこまで読んだかなどの一時的な情報が必要になるわけだけど
そういうのはコレクションそのものとは関係のない属性だからIEnumeratorとして外に括りだしてるわけ
939デフォルトの名無しさん:2009/01/16(金) 20:23:51
ファクトリ?違うでしょ。

>>935
たぶんわかってないのは「IEnumeratorとIEnumerableの違い」じゃなくて
インターフェイスという考え方そのものなんじゃないの?

IEnumeratorもIEnumerableも十分わかりやすいインターフェイスだと思うけど。
940デフォルトの名無しさん:2009/01/17(土) 21:22:43
読み取り専用の依存関係プロパティに値を設定する時は
SetValueにDependencyPropertyKeyを指定すればいいのですが
バインディングターゲットにしたい場合はどうすればいいのでしょうか?
SetBindingにはDependencyPropertyKeyを取るものが見当たりません。
941デフォルトの名無しさん:2009/01/17(土) 21:33:46
public static readonly DependencyProperty HogeProperty
   = HogePropertyKey.DepdnencyProperty;
942940:2009/01/17(土) 21:52:11
>>941
そのDependencyPropertyをバインディングターゲットにすると
読み取り専用の為か"'Hoge' プロパティはデータバウンドにできません。"と例外が起きます。
943デフォルトの名無しさん:2009/01/17(土) 21:57:13
BindingModeがTwoWayになってたりしない?
944940:2009/01/17(土) 22:03:29
>>943
OneWayです。
945デフォルトの名無しさん:2009/01/17(土) 22:14:48
これ以上は依存関係プロパティの宣言とバインディング辺りを見せてもらわないと難しいかな
946940:2009/01/17(土) 22:33:44
>>945
class A : DependencyObject
{
 private static readonly DependencyPropertyKey HogeKey
  = DependencyProperty.RegisterReadOnly("Hoge", typeof(string), typeof(A), new PropertyMetadata());
 public static readonly DependencyProperty HogeProperty = HogeKey.DependencyProperty;

 public A()
 {
  Binding bind = new Binding("Foo");

  bind.Source = B.Instance;
  bind.Mode = BindingMode.OneWay;
  BindingOperations.SetBinding(this, HogeProperty, bind); // 実行時に例外
}

class B : DependencyObject
{
 /* Fooという依存関係プロパティがある */
 public static readonly B Instance = new B();
}
947デフォルトの名無しさん:2009/01/17(土) 22:44:33
ユーザーコントロールを作ってるのですが、
そのコントロール内でアプリケーションが実行中かデザイナ上かを判断する方法はありませんでしょうか?
948デフォルトの名無しさん:2009/01/17(土) 22:45:54
DesignMode
949デフォルトの名無しさん:2009/01/17(土) 22:57:15
>>948
ありがd
950デフォルトの名無しさん:2009/01/17(土) 23:03:03
DesignModeは説明をよく読まないとハマるよw
951デフォルトの名無しさん:2009/01/19(月) 00:15:24
整数型変数で負の数の入力を回避したい場合、
uintではじめから定義するのと、intで定義し、プロパティでセットされたときに
例外をスローするのとどちらが一般的でしょうか
当方Javaから10分ほど前に移行してきたばかりなので
符号付整数の浸透度(?)というか使う局面がまだ感覚的に掴めません
952デフォルトの名無しさん:2009/01/19(月) 00:25:47
どれが一般的とかないと思うんだけどな。
でも符号なしの型使うのはCLS準拠じゃないんだっけ?

というか、俺なら文字通り「入力」の段階で(つまりUIで)弾くけどな。
もちろんプロパティでも例外投げるなり設定可能な最小値を強制するなりの
処置はするけど。
953デフォルトの名無しさん:2009/01/19(月) 00:27:27
googleの規約に使う整数はintだけって書いてあったな
954デフォルトの名無しさん:2009/01/19(月) 00:41:57
>>952,953
ありがとうございます
符号付は必要な場合以外は使わないほうがよさそうですね
さっきはじめて、メソッド名が大文字からはじめることにカルチャーギャップを感じているくらいです
また勉強していく中で何かあったらよろしくお願いします
955デフォルトの名無しさん:2009/01/19(月) 01:18:38
符号なし整数型は、相互運用でどうしても必要ってとき以外は使わなくていいんじゃないかな。
数値の範囲を限定するために符号なし整数型を使うというのは論理的じゃないように思う。
0≦x<100とか、-25<x<25だとかの範囲なら、プロパティでset時にチェックするなり、
UIで入力時にチェックするなりするのだから、0≦xの時だけ違う方法を使うことはないだろう。
956デフォルトの名無しさん:2009/01/19(月) 07:21:08
>>946
バインディングの方向がおかしい
XAMLで考えたら分かりやすいけど
<B Foo="{Binding Source=A, Path=Hoge}"/>
を実現したいんだろ?
ならBindingのパスはHogeでSourceはA
SetBindingするのはBとB.FooPropertyになる

<A Hoge="{Binding Source=B, Path=Foo}"/>
はA.Hogeが読み取り専用なんだから成り立たない
ModeがOneWayToSourceでもな
957デフォルトの名無しさん:2009/01/19(月) 08:58:01
>>956
いや、その逆がやりたいんです。
条件によって、自分でHogeの値を提供したり、Fooの値を変わりに提供したいんです。
Fooの値が変わっても対応できるようにするには、バインディングすれば楽かなと。
HogeKeyを持ってる側ならなんとかできないかな、と。
958デフォルトの名無しさん:2009/01/19(月) 09:22:40
やっと分かった

プロパティ変更イベントでやるしかないね
959デフォルトの名無しさん:2009/01/19(月) 15:25:47
Form1とForm2を作成して、Form1にあるdataGridViewのセル[1,1]へ
Form2からアクセスするにはどうしたら良いのですか?
Form1に
public static Form1 Form1Instance
{
public object dataGridViewCell
{
get
{
return dataGridView1.CurrentCell;
}
set
{
dataGridView1.CurrentCell = value;
}
}
上記のようにすると、Valueの場所で型変換が出来ませんと怒られてしまうのですが・・・
型はObjectではなく何にしたら良いのでしょうか?
960デフォルトの名無しさん:2009/01/19(月) 15:32:16
C#でGUIアプリケーションを作ろうと思ったら .NET Franework 一択でしょうか?
C++のように Win32APIを叩いて作れますか?

また、VSを使わずに普通のエディタでガリガリ書くのは厳しいですか?
961デフォルトの名無しさん:2009/01/19(月) 15:39:03
>>959
怒られついでにvalueの型を教えて貰いなさい
962デフォルトの名無しさん:2009/01/19(月) 15:42:40
>>960
> C++のように Win32APIを叩いて作れますか?
> また、VSを使わずに普通のエディタでガリガリ書くのは厳しいですか?
あなたがマゾヒストなら問題ない
963デフォルトの名無しさん:2009/01/19(月) 15:47:13
win32api叩いても .NET Franeworkの中からだけどな。
964デフォルトの名無しさん:2009/01/19(月) 15:50:41
マゾってわけじゃないんですが。

コントロールをD&Dで配置するので勉強になるのかな、と思って。
それと畑は違うけど、HTMLなんかはビルダーを使うとソースが滅茶苦茶になりがちなのでその点も心配だったんです。
965デフォルトの名無しさん:2009/01/19(月) 15:51:38
別にコントロールはコードだけでも貼れる
966デフォルトの名無しさん:2009/01/19(月) 15:51:55
         ___
        /⌒  ⌒\         ━━┓┃┃
       /(  ̄)  (_)\         ┃   ━━━━━━━━
     /::::::⌒(__人__)⌒:::: \         ┃               ┃┃┃
    |    ゝ'゚     ≦ 三 ゚。 ゚                            ┛
    \   。≧       三 ==-
        -ァ,        ≧=- 。
          イレ,、       >三  。゚ ・ ゚
        ≦`Vヾ       ヾ ≧
        。゚ /。・イハ 、、    `ミ 。 ゚ 。 ・
967959:2009/01/19(月) 15:54:33
>>961
Valueは右辺の代入ではないの?
968デフォルトの名無しさん:2009/01/19(月) 15:55:59
>>964
PetzoldのWindows Formsチュートリアルを読んだことがあるが
まさにVisual Studioを使わずエディタでガリガリ書いていくタイプの本だった
開発効率を気にしないのであれば別に構わないんじゃないか
969デフォルトの名無しさん:2009/01/19(月) 16:15:31
>>964
手書きでGUIの配置をしこしこ書きたいなら、WPFやSilverlightをおすすめするよ。
XAML道に精進するのじゃ。
970960:2009/01/19(月) 16:32:47
>>963,>>965,>>968-969
ありがとうございます、参考にさせてもらいます。
971デフォルトの名無しさん:2009/01/19(月) 16:35:48
コントロールの配置なんか勉強しなくていいよ
もっと他に学ぶべきことはあるからポトペタで十分
むしろポトペタで作られたhoge.Designer.csを見たほうが理解が進む
ボトペタでできたソースと、ホームページビルダーとかWordで作ったHTMLが糞という話は次元が違う
エディタでガリガリなんてお勧めしないね
972デフォルトの名無しさん:2009/01/19(月) 16:42:26
>>959
DataGridViewCell.Valueにアクセスしたいんじゃなくって?
973959:2009/01/19(月) 18:27:27
>>972
その通りです。
valueを返したら行けました。
アリガトゴザイマス
974デフォルトの名無しさん:2009/01/19(月) 21:00:04
基礎が分かってればGUIなんてどうでもいい
動的にコントロールを作る必要にかられたらそのとき調べればいい
ただ,基礎が分かってないと調べようがないからね
975デフォルトの名無しさん:2009/01/19(月) 21:43:58
VS2008でaxWebbrowser使おうと探してるんだけど見つからないです。
ツールボックス右クリック→アイテムの選択→COMコンポーネント

IE7からshdocvw.dllがieframe.dllに変わったってのを見たんで参照で追加してみようとしたけど
「C:\Windows\System32\ieframe.dll の自己登録に失敗しました。」の表示、ieframeも同様。

どこから追加できるんでしょう?

976デフォルトの名無しさん:2009/01/19(月) 21:52:32
つーか、WebBrowser コントロールじゃだめなんか?
977デフォルトの名無しさん:2009/01/19(月) 22:10:35
>>976
WebBrowserだとFlashが正しく動かないことがあってaxwebbrowserに切り替えたんです。

で、今試してみたら以前正しく動かなかったFlashが動きました。
.NET3.5で直った?Flash側が対応した?
とりあえずWebBrowserでいってみます。
ただaxWebbrowserの件ご存知の方いましたら返信お願いしますorz
978960,964:2009/01/19(月) 22:31:16
>>971,>>974
レスありがとうございます。
D&Dでできたソースを信用しても問題ないようですね。
安心して取り掛かれます。(といっても最初はコンソールアプリからですが。

ありがとうございました。
979デフォルトの名無しさん:2009/01/20(火) 07:58:09
自PC(複数アダプタ)から特定のサブネットのユニキャストIPアドレス(例えば192.168.0.0/24)を検索したいんですが、
何か格好いい方法はありませんか?
自分で考えるとGet何とかAll何とか関数でNetworkInformationの配列を取ってきてループするダサい方法しか思い浮かびません><
980デフォルトの名無しさん:2009/01/20(火) 19:00:35
たぶん、君はネットワーク関係のスレにいくべきだと思う
981デフォルトの名無しさん:2009/01/20(火) 19:17:47
カッコイイ方法
982デフォルトの名無しさん:2009/01/20(火) 19:41:36
ド初心者ですがお願いします。

int i;
string txt;

i=982
txt = "レス番号は" + ToString(i) + "です";

↑これエラーが出ます。int型の値を含んでstringの一部にするには
どうすればいいのでしょうか?
983デフォルトの名無しさん:2009/01/20(火) 19:42:51
int.Parse()
984デフォルトの名無しさん:2009/01/20(火) 19:44:49
ToString(i)

ワラタ
985デフォルトの名無しさん:2009/01/20(火) 19:45:52
独創性がありますね
986デフォルトの名無しさん:2009/01/20(火) 19:49:03
>>982
i.ToString()
987デフォルトの名無しさん:2009/01/20(火) 19:49:26
i,ToString(16)
988デフォルトの名無しさん:2009/01/20(火) 19:49:46
txt = "レス番号は" + i + "です";

マタハ

txt = "レス番号は" + i.ToString() + "です";
989デフォルトの名無しさん:2009/01/20(火) 19:50:18
i.ToString(文字列でおながいします)
990デフォルトの名無しさん:2009/01/20(火) 19:50:52
つまんねーよ氏ねよ
991デフォルトの名無しさん:2009/01/20(火) 19:58:39
C#でASP。NETやりたいんだけど、あんまりいい本無いね。
他のJavaやPHPもいい本なかったけど・・

好奇心をそそって面白く学べるような本があったら教えて欲しい。洋書でもいいから。

なんか、プログラム界の本は全般的に面白みがないんだよな〜。
992デフォルトの名無しさん:2009/01/20(火) 20:00:13
自分で探せよボケ
なにが「いい本無いね」、だ
面白みがないんだよな〜ってアホか
993デフォルトの名無しさん:2009/01/20(火) 20:00:48
面白いの作りたいならDirectXで3Dプログラミングがいい
994982:2009/01/20(火) 20:02:16
i.ToString()でできました。
>>983ありがとうございました。
>>984ばーか
995デフォルトの名無しさん:2009/01/20(火) 20:03:01
>>986-989
ありがとうございました
996デフォルトの名無しさん:2009/01/20(火) 20:11:21
”ばーか”ワロタw
997デフォルトの名無しさん:2009/01/20(火) 20:44:17
初心者は、まずインテリセンスに素直に従うことを覚えるべきだねえ。
998デフォルトの名無しさん:2009/01/20(火) 20:52:52
ToStringいらないけどな
999デフォルトの名無しさん:2009/01/20(火) 21:44:49
>>997
いやだ!アレは絶対「インテリジェンス」だもん。インテリセンスなんて従わないもん。
>>998
String + int にも対応してたんだ、知らなかったw
String + intの時にはint.ToString()して、それ以上の複雑な場合にはString.Formatを毎回使ってた

しかし、演算子がオーバライドされてるだけとはいえ、文字列+数字は型が曖昧なJavascriptっぽくって嫌だなぁw
1000デフォルトの名無しさん:2009/01/20(火) 21:48:03
Objectから派生してれば何でも+できるよ
Stringとの+でToStringが呼ばれるのは演算子のオーバーロードじゃなくて言語仕様だったはず
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。