5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C♯相談室 Part20

1 :名無しさん♯:04/12/14 15:19:13

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D

2 :名無しさん♯:04/12/14 15:19:52
過去スレ
Part19 http://pc5.2ch.net/test/read.cgi/tech/1100240847/
Part18 http://pc5.2ch.net/test/read.cgi/tech/1096112588/ (現在HTML化待ち)
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/ (現在HTML化待ち)
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/ (現在HTML化待ち)
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/ (現在HTML化待ち)
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/ (現在HTML化待ち)
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html

3 :デフォルトの名無しさん:04/12/14 15:35:05
※シェアウェア厨の相談はお断りです。

有料のソフトを作ろうと思っている香具師はそれなりの努力をしろ。

4 :デフォルトの名無しさん:04/12/14 16:05:42
※死者プ厨の相談はお断りです。

5 :デフォルトの名無しさん:04/12/14 16:35:15
>>1


6 :デフォルトの名無しさん:04/12/14 17:55:26
>>1
乙.NET

7 :デフォルトの名無しさん:04/12/14 18:03:50
.NEET乙

8 :デフォルトの名無しさん:04/12/14 19:00:55
>>3
別にシェアでもフリーでもいいんじゃない?
教えてあげて、その報酬がないのが気に入らないわけでもないんだし。
必要なのはどれだけ独創的な発送をしたかであって、
それを実現する手段なんて、ただでくれてやらぁ

9 :デフォルトの名無しさん:04/12/14 19:05:50
>>8
ずいぶん太っ腹だなあ。まあ俺も、プロジェクト開発に携わっている以上、
ここで質問してしまったら、シェアウェア厨と何ら変わりないから、自分が
プログラマである事を隠して質問してる。

10 :8:04/12/14 19:14:13
職業としてる人が、ここで質問するのは
ちょっとなぁって気もするけど、ここの住民様たち
経験豊富だしレスもちょっぱやだし、やさしいからYO!

11 :デフォルトの名無しさん:04/12/14 19:23:28
>>10 == >>8 == 前スレの既知概かい?

12 :デフォルトの名無しさん:04/12/14 19:32:29
http://www.atmarkit.co.jp/fwin2k/win2ktips/246checkvdnfw/checkvdnfw.html
NetFramewark1.1SP1をインストールしました。
mscorrc.dllのファイルバージョンが、1.1.4322.2032であることを
確認しました。
しかし乍、VC#の方ではヘルプ→バジョン情報で
NetFramewark1.0.***となっていて、
新しく追加した機能を利用することができません。
どなたか、解決策をご存知ないですか?

13 :デフォルトの名無しさん:04/12/14 19:35:50
>>8
フリー=世のためになる
シェア=作った人のためになる
全然違う、以上。

14 :デフォルトの名無しさん:04/12/14 19:44:04
>>12
VS.NET2002/VC#.NET2002では.NETの対象バージョンは1.0のみ。
.NET1.1を使いたいなら2003を使う。

15 :デフォルトの名無しさん:04/12/14 19:44:08
>>12
VC# 2003を買う。

16 :12:04/12/14 19:47:48
うひゃ、まじですか?
そりゃ、致命的ですね!!
2005のECがよさげなんで、
さっそくアマゾってみようかな。

17 :V-V-V:04/12/14 20:15:26
おねがいします

VS.NET 2003なんですが

http://support.microsoft.com/default.aspx?scid=kb;ja;317109

この問題に直面してます。
ここに書いてる通りにしようと思ったのですが、
一点だけわからないことがあります。

VBの
o = Nothing
に相当するC#のコードってなんでしょうか?
とにかくデストラクタ発動したらうまくいくのでしょうか。

18 :デフォルトの名無しさん:04/12/14 20:20:24
>>17
null

19 :デフォルトの名無しさん:04/12/14 20:20:37
ぬるぽ

20 :V-V-V:04/12/14 20:56:16
ありがとうございます

実は
o = null;
でうまくいかなかったもので・・・
原因は別にありそうですね。

21 :18:04/12/14 21:49:17
僕も同じような問題で悩んでいます。
wDocとかwSelectionを利用しているのですが、
ワードをmyApplicationよりも先に終了したときに、
終了した事実をどう取得するか、という問題に取組んでいます。
ご存知でしたら、教えてNE!

ちなみに、GetType()で返り血を浴びてnullかどうか判定するという
意見もあったけど、GetType()がもともとなかったんだYO

22 :デフォルトの名無しさん:04/12/14 22:03:52
Windows.Forms の DateTimePicker で、2004 と押したら、月の位置に
キャレットを自動的に移動する事はできませんか?

標準だと 2004 とタイプして カーソルの右を押して、12 を入力して
カーソルの右を押して…、とわざわざカーソルで年月日の項目へ
移動しないといけません。

これを、4, 2, 2 の入力で自動的に年月日の欄へ移動させたいのですが…。

何か方法があれば教えてください。

23 :デフォルトの名無しさん:04/12/14 22:11:24
IPアドレス入力テキストボックスみたいにしたいのかな?
DateTimePickerのメンマをチェキラ

24 :デフォルトの名無しさん:04/12/14 22:14:36
DataSet DatatableをDatagridのSourceとmemberに設定しているものです。
DataGridに表示されているデータを手軽に印刷する
方法で、PrtSc以外の方法はありませんか?

25 :デフォルトの名無しさん:04/12/14 22:40:35
前すれまだ残ってるのに何でこっちに来てるんじゃ?
仕様?

26 :デフォルトの名無しさん:04/12/14 22:42:12
ADO.Netで便乗質問です。
SQL文でFindとか書くよりも、DataSetの中の1テーブルを、
DataViewに入れて、FindとかSortする方が激しく楽なんですが、
この方法だと、テーブル全部がローカルのメモリに展開されている
ことになるんですよね?

レコードが数万件とかなる場合には、使っちゃ駄目なんですよね。
そのあたりの境って何か具体的な指標があるんでしょうか?
作ってみたら、重くて、駄目だこりゃ、っていう判断しかないんでしょうか?


27 :デフォルトの名無しさん:04/12/14 23:19:37
レコードが数万件ならやめとけ

28 :22:04/12/14 23:24:52
>>23
そうです。そういう感じです。

メンマをチェキラってみましたが(笑)
できそうなメンバを見つけられませんでした。

お手数ですが、御存知でしたらもう少しヒントを頂けると
助かります。

よろしくお願いします


29 :23:04/12/15 00:05:48
VisualC# 2003買おうかと思ったけど、
高くて高くて・・・。
仕方ないので、SDKでがんばって、GetAdaptorInfoります。

30 :デフォルトの名無しさん:04/12/15 01:19:17
dBASE IV用のADO.NETプロバイダは無いのですかね?

31 :デフォルトの名無しさん:04/12/15 02:28:26
あるよ。
インストールし忘れたんだろ。

32 :デフォルトの名無しさん:04/12/15 10:17:32
AというHashtableに設定されたキーと値をそのまま、
BというHashtableに追加したいんですが
Aの内容をグルグル回して追加していくしかないのでしょうか

33 :デフォルトの名無しさん:04/12/15 10:23:30
クローンを作るんでないなら、そうだろうね。

34 :デフォルトの名無しさん:04/12/15 10:30:41
>>31
申し訳ないですがプロバイダ名を教えてもらっていいですかね
振るインストールしたはずなんだけど、、

35 :デフォルトの名無しさん:04/12/15 10:48:40
>>34
いつの情報か分からないけど
>http://primates.ximian.com/~atsushi/mono-jp/ado-net.html
>プロバイダが欲しいが、まだ無いデータベースもあります。現在、こういったデータベースは ODBC もしくは OLE DB プロバイダを通してサポートされています。


36 :デフォルトの名無しさん:04/12/15 10:58:36
>>35
ole dbじゃまともに動かんのですよ
thx

37 :デフォルトの名無しさん:04/12/15 11:16:15
>>36
ここ読んで見れ
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200303_03030004.html


38 :デフォルトの名無しさん:04/12/15 11:27:11
>>37
ありがとうそこも読んだ事ある
書き方が悪かったですねdBASE専用のプロバイダが無いかなと質問したところでした

39 :デフォルトの名無しさん:04/12/15 15:37:41
以前、CGIへデータをPOSTするコーディングについて
質問した者です。またお世話になります。
CGIへPOSTするデータ
key1=value1&key2=value2&key3=value3・・・
という文字列になるのですが、key2に設定する値がない場合は
key1=value1&key2=&key3=value3・・・
になるのでしょうか
key1=value1&key3=value3・・・
になるのでしょうか。
CGIの仕様に基づいて決まるものなのでしょうか。


40 :デフォルトの名無しさん:04/12/15 16:22:11
>>39
シェアウェア厨氏ね。

41 :デフォルトの名無しさん:04/12/15 16:45:47
>39
C# に関係ない。スレ違い。Webprog板にでも池

42 :sage:04/12/15 16:57:39
VS2003である日突然デバッグ不能になりました。
C#アプリでもASP.NETでも両方です。
Exceptionが発生したり、ブレイクポイントにくると、
デバッグ中のアプリもVS2003も応答無しになり、
アプリ強制終了で、VS2003が復帰(ソースの位置を特定できません)
になってしまいます。
同様の現象 みたことあります?

43 :デフォルトの名無しさん:04/12/15 17:09:13
おもいっきりageちゃった。
なんか、X Button Maker切ったら少し進んだ。
どうもデリゲートあたりらしい。
すまんかった。

44 :デフォルトの名無しさん:04/12/15 21:21:23
デリケートなデリゲート


45 :デフォルトの名無しさん:04/12/15 22:41:43
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ

46 :フナ太郎:04/12/15 22:45:29
>>44
とってもプリティーなプロパティ


47 :デフォルトの名無しさん:04/12/15 23:32:52
スルーしてやるのが大人の配慮ってもんだ。

48 :デフォルトの名無しさん:04/12/16 02:50:35
おまえらもっと自分に素直になれよ

49 :デフォルトの名無しさん:04/12/16 12:22:43
44はまだしも46はdmp

50 :23:04/12/16 19:37:18
>>39
ここでPost系の質問しない方がいいよ
前のPart19
で僕がここの方々を怒らせていまったんだ。
なんでウェアウェアをお手伝いしてるのに、報酬がないんだ、と。
まったくもって、貧乏の集いだよな。

51 :デフォルトの名無しさん:04/12/16 19:41:26
今年はクマーがよく出没する一年でした。

52 :デフォルトの名無しさん:04/12/16 19:44:22
>>50
シェアウェア厨は氏ね。

53 :デフォルトの名無しさん:04/12/16 20:21:36
ウェアウェア ワロタ

54 :デフォルトの名無しさん:04/12/16 21:25:24
>有料のソフトを作ろうと思っている香具師はそれなりの努力をしろ。
(( ;゚Д゚)))エ・・・エエー!! 聞いたらダメですか・・・

55 :デフォルトの名無しさん:04/12/16 21:44:23
ここにいるのはみな趣味グラマなのか?

56 :デフォルトの名無しさん:04/12/16 21:44:59
荒らすなボケ。シェアウェアで怒られるようなら、気付かれないように聞け。それくらいの心使いはあってもいいと思う。

57 :デフォルトの名無しさん:04/12/16 22:35:39
そういう問題なのか?
内容がwebprog板だろって事だろ

58 :デフォルトの名無しさん:04/12/16 23:11:39
だからなんでシェアを毛嫌いしてんだボケ。
個人でやってりゃシェアで、会社を興せばプロダクトか?

59 :デフォルトの名無しさん:04/12/16 23:14:07
アンチスパイウェアだったはずが、いつの間にか
アンチシェアウェアに話がすり替わっている。
何故だ。

60 :23:04/12/16 23:35:07
スパイウェア作るのがよく批判されるけど、
スパイ機能(とでもいうのでしょうか)でも搭載しなけりゃ
いつ海賊されるかと不安になるのわかる人手を上げて!!。

というか、こういうシェアウェアに関する話題のすれって
どこに行けばあるんですか?マ板にもなかったYO。

>>56
正論。反省します。

>>55
趣味グラマですが、仕事に直結した趣味グラムだけ。

61 :23:04/12/16 23:38:28
ところで、39みたいな
POST機能(?)を使うに際して
FW等で警告を受けることはあるのですか?
「不正なアクセスが発生しました。下記のプログラムを終了します」とか。

62 :デフォルトの名無しさん:04/12/17 00:02:30
http://sleipnir.pos.to/software/pbse/images/ss.png

.NETで上のようにOfficeチックな2色のFrom.BackColorにするにはどうしたらいいのでしょう?

63 :デフォルトの名無しさん:04/12/17 00:09:09
>>60
ソフトウェア板にある。しかし、そこも"糞"シェアウェア呼ばわりされているがな。
要するに、情報はタダで得て、自分は金儲けの道具に使うってのを前に出すと
あまりにも虫のよすぎる話なのですぐ嫌われるから、有料のソフトを作ってるっ
て事を隠して質問しろ、って話。

64 :23:04/12/17 00:10:04
>>63
サンクスコ

65 :デフォルトの名無しさん:04/12/17 00:31:53
普通有料のソフトつくる奴が質問なんぞしない
そんな奴がつくったソフトなんぞ誰も買わないし買ってもトラブルになるだけ。

訴訟されたときの覚悟はおあり?

66 :デフォルトの名無しさん:04/12/17 00:34:51
ウイルスソフトばっかり作ってんじゃねーぞ。

67 :デフォルトの名無しさん:04/12/17 00:35:55
> 訴訟されたときの覚悟はおあり?
余計なお世話。

68 :デフォルトの名無しさん:04/12/17 00:38:44
誰もあんたのくさいソフトなんか海賊しないってのwwwwwwwwwww

69 :デフォルトの名無しさん:04/12/17 00:40:07
C#で海賊対策なんぞ無理

そういうこともわからないようじゃ

100000000000000000000000000000000000000000000年ったっても

地面にはイツ配った乞食になるしかない

どうせシェアウェアつくろうとかしてるのは無職ニート童貞って相場が決まってる

70 :デフォルトの名無しさん:04/12/17 00:45:48
    人     
   (__)  &⌒)                 l|l
   (__)  \ \              ii |’, |
  (  ・∀) / /      _- ― = ̄   `|
  /    ⌒ /  , -'' ̄  = __―||―lilノ
  ヽ,_ヽ    ヽ/~""  _-―  ̄                 /
     ヽ,,      __,,, -             ∧ ∧―= ̄ `ヽ/,, _
      ヽ    /               (   〈__ > ゛ 、_―
      ヽ   /              .'∴.' <.'∴'(/ , ´ノ
       |   |               ・,‘ /// / /
        |   |                .'∴/ / ,'   ↑
         |   |                /  /|  |   >>23
          |   |               !、_/ /   )
           |   |                   |_/

71 :デフォルトの名無しさん:04/12/17 00:47:10
                O
      _O       ・’
       ノ\/・’ヽ∵. >>23
        │ _ノ ヽ
            〉


72 :デフォルトの名無しさん:04/12/17 01:05:09
結局、誰かのせいで仕事でC#をやっている人間がここで質問しづらくなったってことだな。

73 :デフォルトの名無しさん:04/12/17 01:13:20
有料のソフトつくる奴の質問はお断り

74 :デフォルトの名無しさん:04/12/17 01:17:50
今まで微妙な均衡が保たれてたのにどっかの馬鹿のせいで一気に崩れたな

75 :デフォルトの名無しさん:04/12/17 01:21:24
まあ、崩れた均衡はもう一度取り返せばいいわけで。
シェアウェア作者は別に来てもいいと思うが、>>23には来ないで欲しい。

76 :デフォルトの名無しさん:04/12/17 07:11:03
>>62
ttp://ukamen.hp.infoseek.co.jp/Programming1/GDI/LinearBrush.gif

77 :デフォルトの名無しさん:04/12/17 08:18:37
あの既知概まだいたのか

78 :デフォルトの名無しさん:04/12/17 11:45:56
VB.NETだと、windows scriptのnetworkDriveでネットワークドライブの割り当てができるようなのですがC#でそれをする方法はないでしょうか。

79 :デフォルトの名無しさん:04/12/17 11:49:33
WSHはよー知らんが、VBでその部分作ってC#でよべばよかろ

80 :デフォルトの名無しさん:04/12/17 12:07:30
金なくてC#しかないんです…orz

81 :デフォルトの名無しさん:04/12/17 12:18:17
IDEなんて無くてもその程度のコードくらい書けるさ。

まあ、何が何でもC#でというならこの辺で。
ttp://dobon.net/vb/dotnet/vb2cs/createobject.html

82 :23:04/12/17 12:27:30
>>72
仕事であることを隠せ、by 56

>>65
何の根拠もない支離滅裂な発言はやめましょう。

ところで、いかなる問題が発生しても訴訟を起こすことが
できないように利用規約に予め明文化しておけば
いい、ってことはないですかね。
シェアウェアだろうと基本的に放置するので、そこんとこ大事。

83 :23:04/12/17 12:28:54
またスレ違ιヽな発言をしてしまった。
ごめん、82はなかったことで。
すみあせん。

84 :デフォルトの名無しさん:04/12/17 12:32:45
>>74
まぁまぁ。
>>75
ごもっとも。

85 :デフォルトの名無しさん:04/12/17 12:42:41
職業プログラマは質問に答えるだけにしましょう

86 :デフォルトの名無しさん:04/12/17 12:46:47
>>85
そうですね。
趣味グラマがシェアウェア作るのに質問したとしても
バンバン惜しみなく教えてあげましょう。
うちらは、趣味グラマの何倍もの給与もらってホクホクですから!!
というか、出し惜しみするような知識なんて私にはありませんが・・・。

87 :デフォルトの名無しさん:04/12/17 12:54:54
>>82
ほう。そんな糞シェアウェアは当然使わない罠。金は取るだけ取って、
後はユーザーからのクレームは一切無視か。そんなばかな。それは
詐欺ウェアですよ。

多分、明文化したとしても、訴えられたらあんた負けると思うよ。

88 :82:04/12/17 13:01:07
>>87
ユーザーから不具合報告あったら、
バージョンアップ時についでに修正する予定です。
あ、もちろんバージョンアップ時にしかりお金をいただきますが。
それでユーザーが離れていっても別にかまわないし、
どうすればユーザーが増えるかってことを議論するのは場にふさわしくないので
■■■■糸夏   了■■■■

89 :デフォルトの名無しさん:04/12/17 13:03:27
http://www5.cao.go.jp/2000/c/0512c-keiyakuhou.html

90 :デフォルトの名無しさん:04/12/17 13:05:14
>>87
そのへんどうなのよ。
製造物だとPL法などもあるけど、さいしょからこの商品は壊れやすいものですがとか不十分でそれによる損害をおいませんとか書いてあっても責任生じるのか?
明文化していても自己責任にならんのか?

91 :デフォルトの名無しさん:04/12/17 13:05:27
>>87
>多分、明文化したとしても、訴えられたらあんた負けると思うよ。

利用規約に、損害に対する責務を負わない旨を記載すれば、
相応の訴訟を起こされても、対抗できます。
利用規約に同意の場合にのみ利用するものとすると、
購入前に事前に通達しておけばいいことですから。

よって、不具合起こっても基本的に放置可。
すれ違いですみません。

92 :デフォルトの名無しさん:04/12/17 13:06:19
消費者契約法によってその条項は無効になる

93 :82:04/12/17 13:11:34
>>90
消費者契約法第8条1項1号があやしいな。

94 :デフォルトの名無しさん:04/12/17 13:11:40
>>91
あまりにも消費者の利益をないがしろにした利用規約は、不利な物的証拠
になりますよ。

>>88
勝手に終了してんじゃねーよ。ま、中の利用規約を読んで、そのような内容
だったら、あんたが作った物だと思うことにするよ。そして「あー、ダウンロード
して時間を損したな」と思うから。

95 :デフォルトの名無しさん:04/12/17 13:12:48
市販ソフトの規約すら読んだ事無いんだろ
普通どの規約にも損害おきてもシラネーヨなんてことくらいは書いてある

96 :デフォルトの名無しさん:04/12/17 13:12:58
消費者契約法は無制限に保護することを可能とするものじゃないだろ。
前述の条項は十分に適当なものだと思うけど。

97 :デフォルトの名無しさん:04/12/17 13:15:43
>>95
しかし市販ソフトの大半は、マイナーバージョンアップはタダだし、
しかもオンラインバージョンアップで手軽にできるし、ユーザーが
利益を享受できるように考えられている。

M$は悪の巣窟のように言われているけど、実際、どれぐらい多量の
WindowsUpdateで対応している?あの姿勢があるからこそばんばん
売れるんじゃないか?

98 :デフォルトの名無しさん:04/12/17 13:16:19
ものによっては交通、科学技術、医療などの分野で使うことはお勧めしないなんて
文を混ぜてる規約もあるしな

99 :82=91:04/12/17 13:16:48
>>94
どのソフトも、それによって生じたいかなる損害も
負わない旨が利用規約にかかれてますが、いかが?
だいたいWindowsXPだって不具合だらけで
よくPC凍るけど、それにともなって
未保存のワード文書が消失したからといって、
Microsoftを相手に訴訟を起こして勝てるとでも
思っているのかね。
つまりは、フリーだろうとシェアだろうとプロだろうと、
それにより生じた損害は自分で負うのだよ。
ではなく事業者が負うソフトがあるならば、
紹介してくれ。
そのソフト使って不具合を発生させて、
そのときたまたま大切な文書を書いていたことにして
訴訟を起こしてがっぽりもうけてみるから。

100 :デフォルトの名無しさん:04/12/17 13:17:17
またあらぬ方向に話をそらそうとする奴が

101 :デフォルトの名無しさん:04/12/17 13:19:06
相手にする奴が悪い

102 :82=91:04/12/17 13:21:48
ちなみに私は
「このソフトは完全な動作を保障するものでありません。
したがって、利用前にはすべての記録媒体のバックアップを・・・」
と明文化するつもりです。これなら、いくら未保存のファイルが
あったとしても、ソフトの不具合が発生する直前の状態が正常ならば、
私に責任はありませんから、そしてどのソフトの規約にもそのような
ことがかかれてあります。

103 :デフォルトの名無しさん:04/12/17 13:23:16
世の中には全部免責を謳ったパッケージやシェアウェアが結構あるが、
消費者契約法上無効になり、94の言う様に逆に不利になる恐れがある。

製品の瑕疵などによる損害賠償額は消費者が事業者(個人も含む)に支払った額を限度とする
と言う感じの契約にするのが無難。

ATOKの使用許諾契約書が法律的にCSR的に良く出来たものという評判がある。


104 :デフォルトの名無しさん:04/12/17 13:24:08
>>99
不具合だらけでも使わざるを得ないから使ってるんだろ。
使う必要のない、しかも滅多にバグを直さない糞シェアウェアなんて
誰が金払ってまで使うかよ。

↓次で「別に文句のある香具師は使わなくていいよ」と言ってくれ。それで終結する。

105 :デフォルトの名無しさん:04/12/17 13:25:41
だから、世の中に溢れてる全部免責の契約は無効なんだって
そういうソフトはあらを見つけて訴えると嬉しいことになるかもよ

106 :デフォルトの名無しさん:04/12/17 13:25:57
別にマンコのある香具師は使わなくていいよ

107 :82=91:04/12/17 13:26:58
別に文句のある香具師は使わなくていいよ
糞なのは自分がよくわかってる。

で、使わざるを得ないソフトを当然目指している。
というかもうできているが、公開する準備ができていない。
当然高額。サポート掲示板もあり、放置するわけがない。
よりよい製品を目指して、日々精進するのみ。
ちょっと煽りすぎてごめん。

108 :デフォルトの名無しさん:04/12/17 13:32:38
無効にならねーよ
同意した人だけが使えて言ってるんだから使用してる時点で使用許諾の内容認めてるだろうが

109 :デフォルトの名無しさん:04/12/17 13:35:25
そう思うならそうしろ

110 :デフォルトの名無しさん:04/12/17 13:36:00
>>108
消費者契約法の第一条を100回読む事をお勧めする。

111 :デフォルトの名無しさん:04/12/17 13:36:40
消費者契約法
http://www5.cao.go.jp/2000/c/0512c-keiyakuhou.html

112 :82=91:04/12/17 13:38:48
82=91 :04/12/17 13:26:58
別に文句のある香具師は使わなくていいよ

だから、すれ浪費するのもうヤメレ

113 :デフォルトの名無しさん:04/12/17 13:41:59
>>112
自分で火を付けておいて何を戯言を言ってるのやら┐(´∀`)┌ヤレヤレ

114 :デフォルトの名無しさん:04/12/17 13:42:22

     |  i"ヽ/"i
     |  ヽ ハ ノ   別に文句のある香具師は使わなくていいよ
     |   ('A`)ノシ
    / ̄ ノ( ヘヘ ̄



115 :デフォルトの名無しさん:04/12/17 13:44:25
>>110
おまえこそ1000回読め

116 :82:04/12/17 13:45:16
もうヤメレ。
これ以上、本題から外れたことGackt、削除依頼だすよ


117 :デフォルトの名無しさん:04/12/17 13:45:48
>>115
君のような香具師は、実際に訴訟起こされて見るまで絶対自分だけは
安全だと思いこんでるんだろうな。

118 :82:04/12/17 13:49:25
いい加減、もうヤメレ

119 :デフォルトの名無しさん:04/12/17 13:50:23
>>82と、>>108>>115はどうも同一人物のような希ガス。

120 :82:04/12/17 13:55:21
>>119
どう思おうが勝ってだが、
僕はこのスレが好きなので、少しでも早く事態が収束することを
願い、また自分が場の雰囲気を乱してしまったことを反省しています。
ただそれだけで、それ以上でもそれ以下でもありません。

ソフトの利用許諾等に関してはソ板にあるので、
そちらへどうぞ。

121 :デフォルトの名無しさん:04/12/17 13:57:44
     ヘ( `Д)ノ 別に文句のある香具師は使わなくていーよーっ!
   ≡ ( ┐ノ     
  :。;  /


122 :82:04/12/17 13:58:11
別に文句のある香具師は僕の糞ソフト使わなくていいよ

だから、浪費はもういいよな、なっ!

123 :デフォルトの名無しさん:04/12/17 14:16:48
てか、前スレ埋まってないから前スレでやれ。

124 :78:04/12/17 14:38:50
>>81
THX

ぬお。このサイトに関連記事が書いてあるっぽいです。
http://www.codeproject.com/csharp/mapnetdrive.asp

125 :デフォルトの名無しさん:04/12/17 16:17:21
そういえば、「超図解C#ルールブック」って本、読んだ?全然立ち読みでいいけど。
俺のソースは間違いだらけだったよ・・・orz

まぁ、俺は、一人でプログラムしているだけだから
それほど気にしなくてもいいかもしれないけどな。

126 :デフォルトの名無しさん:04/12/17 16:36:17
超 とかついてる時点でアレな気はするな
amazonで表紙だけでも見てみるか

127 :デフォルトの名無しさん:04/12/17 16:44:21
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconparameternamingguidelines.asp

128 :デフォルトの名無しさん:04/12/17 17:17:56
画像の形式(png→jpg)を変換するには
どうしたらよいでしょうか

129 :デフォルトの名無しさん:04/12/17 17:19:39
Image.FromFile(string)してImage.Save(string, ImageFormat)すればいいんじゃないかな。

130 :デフォルトの名無しさん:04/12/17 17:34:05
ImageFormatに「jpg」が出てこないのですが

131 :デフォルトの名無しさん:04/12/17 18:15:39
確かにjpgは無いな。「jpg」は。

132 :82:04/12/17 18:31:27
>>130
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawingimagingimageformatmemberstopic.asp
パブリックプロパチ
Jpeg JPEG (Joint Photographic Experts Group) イメージ形式を取得します。
ImageFormat.Jpeg

133 :デフォルトの名無しさん:04/12/17 19:40:28
マジレスしていいのかわからないけど・・・・
82って無職だよね。

昼から幼稚園なみの能書きをタラタラ。

お母さん泣いてるよ

134 :デフォルトの名無しさん:04/12/17 19:44:06
>>133
多分無職ニートだろ。ここまで世間知らずの厚顔無恥な書き込みは、まともな社会人なら
おいそれと出来るものではない。

135 :デフォルトの名無しさん:04/12/17 20:16:44
〃〃∩  _, ,_
 ⊂⌒( `Д´) <別に文句のある香具師は使わなくていーよーっ!
   `ヽ_つ ⊂ノ


136 :デフォルトの名無しさん:04/12/17 20:23:02
蒸し返すなら前スレでやれ。

137 :82:04/12/17 21:22:49
無職だからこそ、出会いソフトで一発金銭を狙っているわけでして、はい。
ニートってなに? API?

138 :デフォルトの名無しさん:04/12/17 21:24:40
http://www.sodateage.net/mainpage/NEET/Top.htm

139 :デフォルトの名無しさん:04/12/17 21:54:46
だめな奴がなにをやってもダメ
おとなしく自殺しろ

140 :デフォルトの名無しさん:04/12/17 22:00:22
>>137
100%売れないから。氏ね。

141 :82:04/12/17 22:09:49
東大理2の学生ですが何か。プゲラ

142 :デフォルトの名無しさん:04/12/17 22:10:34
あら〜今度はついに嘘つきですか・・・・可愛そうな人だ。ニート風情が。

143 :82:04/12/17 22:12:16
もううそってばれたのか・・・●rz...

144 :82:04/12/17 22:14:54
15秒しかたってないのに・・・

145 :デフォルトの名無しさん:04/12/17 22:46:58
this._dtable.RemotingFormat = System.Data.SerializationFormat.Xml;
RemotingFormatがC#2005で認識されません・・・。

SerializationFormatも。
ComponentResourceManagerも。

2002から2005にバージョンアップしたばかりです。
お願いします。エロ異ひと。

146 :デフォルトの名無しさん:04/12/17 23:02:47
>>120
>僕はこのスレが好きなので、少しでも早く事態が収束することを
>願い、また自分が場の雰囲気を乱してしまったことを反省しています。

じゃあ消えてください。さあ、今すぐに。

147 :デフォルトの名無しさん:04/12/17 23:55:53
>>146
IPを抜き取りました。
今から、あなたの家へおやつを持って伺います。

148 :デフォルトの名無しさん:04/12/18 00:30:38
.NET FrameWorkにはSQLサーバーを経由しないで
簡易データベースを作れるクラスはあるのでしょうか?


UNIXのBerkleyDBみたいな奴がほしいんですが

149 :デフォルトの名無しさん:04/12/18 00:46:03
>>147
マジレスすると、ム板の人間にそういう原始人みたいな脅しが通用すると思うか?

1.まずどうやって2chに記録されているホスト/IPを開示してもらったのか?
2.百歩譲って1.が出来たとして、次にそのIPから、どうやって書き込み者の
  住所を特定できたのか?プロバイダが情報を開示するのは、警察や司法の
  要請があった時だけだぞ。

最後に一言。氏ね。

150 :デフォルトの名無しさん:04/12/18 00:55:14
マジレスしてる時点で死んでいいよ(^^

151 :デフォルトの名無しさん:04/12/18 00:59:45
>>150
なぜわざわざ「氏ね」という漢字を使っているのかも知らないのか。
お前、心底馬鹿だと思うよ。

152 :デフォルトの名無しさん:04/12/18 01:02:18
sage厨同士仲良くしろよ。

153 :デフォルトの名無しさん:04/12/18 01:04:45
(・∀・)ニヤニヤ

154 :デフォルトの名無しさん:04/12/18 01:35:28
>>151
嗚呼わたくしにはあなた様の高尚な意図が全く理解出来ませぬ
どうかご解説くださいませ

155 :デフォルトの名無しさん:04/12/18 01:36:12
アッヒャッヒャ!ヽ(゚∀゚)ノ

156 :デフォルトの名無しさん:04/12/18 01:46:29
>>154
そんな事くらい自分で調べろハゲ

157 :デフォルトの名無しさん:04/12/18 01:49:34
おお、マジレスしてしまった自分を悔いているのですか
悔い改めなさい、さすれば救われるでしょう

158 :デフォルトの名無しさん:04/12/18 01:52:51
お前ら最高に面白い

159 :147:04/12/18 02:19:56
>>149
そんなに混じれ酢したいのか?

160 :146:04/12/18 02:23:02
>>159
いつまで待たせんだよ。

161 :デフォルトの名無しさん:04/12/18 06:29:07
>148
なにがしたいのかようわからんが、
System.DataのDataSetを使ってXMLで管理すればいいだけじゃないか?
あのクラス群はデータベースにアクセスするためだけのクラスじゃないのだから。
速度とか効率とかはしらんけど

162 :161:04/12/18 06:44:50
ほかには、適当にクラスを作ってそれをコレクションクラスで管理して、
それをシリアライズすれば、オブジェクトデータベースっぽいものができるっぽ。

まぁ、入出力管理等々は自分でやらないといけないし、
メモリー上に作るから、プログラムが落ちたらデータも飛ぶけどな。

163 :デフォルトの名無しさん:04/12/18 06:44:56
>>161
空気読め

164 :デフォルトの名無しさん:04/12/18 10:00:04
Visual Studio 2005 の発売っていつなんでしょう?
今 Visual Studio 2003 (C#) で開発しているのですが
Visual Studio 2005 が出たら、Visual Studio 2003 で開発したソースは
そのままリビルドして使えるのでしょうか?

御存知の方、教えてください。

165 :デフォルトの名無しさん:04/12/18 10:46:45
>>164
2005年の第三四半期辺りらしい。

基本的にそのままリビルド可能なはず。
ベータを今までいじった範囲で書き直しが必要な部分は特になかったと思う。
ただ、一部Obsoleteになった機能があるから警告が出るけど。(コンパイル・実行はできる)
代表的なのだとXmlValidatinReaderとか。


Orcaはいつ頃になるかね……。

166 :デフォルトの名無しさん:04/12/18 11:34:03
>>148
COMでよければ、ADOX.CatalogでMDBファイル(Accessデータベース)を作れるよ。

167 :147:04/12/18 21:41:24
>>164
確かプログラム板に2005のスレッドあったよ。
2005の体験版が紹介されてるから、
インストールしてみるといいよ。
ちなみに、僕は2002のソースそのまま移行したら、
ComponentManagementなんとかっていうのが
エラーとしてひっかかってた。
だから無条件に移行できるわけではないような気がしたが
詳細はわからない。2005のスレッドで
質問してみるのがよい。

168 :デフォルトの名無しさん:04/12/19 00:57:55
フォームをMDIのコンテナにして、
子フォームがMDIの外にでそうになると出るスクロールバーを
表示させないようにするには、どのようにすればいいのでしょうか?
AutoScroll = falseで解決できないのですね...

169 :デフォルトの名無しさん:04/12/19 01:01:23
"ff"という文字列を
ffというbyte型に変換したいのですが・・・
どうすればいいのですか?
byte.ParseとかConvert.ToByteでできません・・・。

170 :169:04/12/19 01:15:41
自己レスすまんが、解決した。
_pass[i] = byte.Parse(form.str.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber);
http://www.32key.com/cs/cs/cs001.htm#cs001

171 :デフォルトの名無しさん:04/12/19 01:25:36
アホな質問で申し訳ないんですが
たまに見かける
>>170さんみたいに変数の前に_をつけてるのってどういう意味なんですか?
_passの_です。
コーディング規約かなんかですか?

172 :デフォルトの名無しさん:04/12/19 01:41:04
Convert.ToByte(string, int)ってマイナーなのかな……。

173 :デフォルトの名無しさん:04/12/19 01:55:29
>>169
だからさーそんぐらい自分で書けよ・・・探す能力も重要だけど、書ける能力もっと大事だと思うぞ。

174 :デフォルトの名無しさん:04/12/19 02:25:39
>>171
誰でもがそうなのかは不明ですけども、
クラスのprivateフィールドとpublicプロパティを同じ名前にするときに
時々アンダーバーで始まる名前を付けることがありますね。

private string _name;
public string Name { ... }

のような具合。

175 :デフォルトの名無しさん:04/12/19 02:34:36
>>173
それはそれで正論だが、例えば>172を知っていれば2進数の時や8進数の時に改めて書く必要はなくなるし、
逆方向の変換も同様の手段が執れるだろうと容易に思いつけるわけで。

176 :デフォルトの名無しさん:04/12/19 02:51:39
PAINT.NET 2.0 が出てたので
ソースコード読んで勉強してみます。

177 :デフォルトの名無しさん:04/12/19 04:07:56
>>171
頭文字に_(あんだば)つけると、
インテリセンス(だっけ?)が表示されたときに
候補の最上部に自作フィルドが集中して表示されるわけでして、はい。
もしくは、自作フィルドが一見してすぐ見分けつく。

178 :デフォルトの名無しさん:04/12/19 04:12:46
// private System.Windows.Forms.DataGrid _g;
// private System.Windows.Forms.DataGridTableStyle _gtablestyle;
// private System.Windows.Forms.DataGridTextBoxColumn _gcolumn1;
// private System.Windows.Forms.DataGridTextBoxColumn _gcolumn2;

private Word.Application _wApp;
private Word._Document _wDoc;
private Word.Selection _wSel;
private object oMissing;

179 :171:04/12/19 12:55:19
他と分けて見やすくする。
他のかぶるのを避けるためなんですね。

ありがとうございました。

個人の素人趣味グラマーには関係ないってことで…

180 :デフォルトの名無しさん:04/12/19 13:42:27
いや違うだろ。

181 :デフォルトの名無しさん:04/12/19 14:33:13
コメントの付け方について相談です。

private int hogehoge; // ほげほげ
とコメントをつけるとインテリセンスなどで表示しないので、本来なら

/// <summary>
/// ほげほげ
/// </summary>
private int hogehoge;

とつけるべきかと思いますが、このようにコメントをつけると行数がかさみ
1画面に表示できる内容が減ってしまいす。同様に
private enum Hogehoge
{
/// <summary>
/// ほげほげ1
/// </summary>
Hoge1,

/// <summary>
/// ほげほげ1
/// </summary>
Hoge2

とコメントをつけるのが本来なのかもしれませんが、
private enum Hogehoge
{
Hoge1, // ほげほげ1
Hoge2 // ほげほげ2

のほが(慣れもあってか)見易いです。みなさんは、コメントはどのようにつけてますか?

182 :デフォルトの名無しさん:04/12/19 14:38:35
コメントは貴方の心の中にそっと留めましょう

183 :デフォルトの名無しさん:04/12/19 14:40:17
間を取って
///<summary>Comment</summary>
enum Hoge {...}

パラメータを含む場合はsummaryも開始タグ・内容・終了タグの三段に分ける。

184 :デフォルトの名無しさん:04/12/19 15:17:07
C#あぷりのなかでマクロとしてスクリプトエンジン動かしたいんですが関連クラスなどご存知ですか?

185 :デフォルトの名無しさん:04/12/19 15:21:49
CodeDom?

186 :デフォルトの名無しさん:04/12/19 15:24:28
ActiveScript使えないの?

187 :デフォルトの名無しさん:04/12/19 15:27:55
>>185
んーやはしそこらへんですよね。マダ調べたりないんですけど、デバッグ環境とか難しそうで・・・まぁそこまで作りこむことないのかな・・・

188 :デフォルトの名無しさん:04/12/19 15:29:14
ActiveScriptはなんかちがうっぽい・・・

189 :デフォルトの名無しさん:04/12/19 16:17:11
http://www.cnblogs.com/vibration/archive/2004/06/14/15504.html

190 :デフォルトの名無しさん:04/12/19 16:33:10
読めん

191 :デフォルトの名無しさん:04/12/19 20:02:40
Stream から Stream へ内容の一部を直接、複写するメソッドはないんでしょうか。
わざわざ byte[] を介在させるのが鬱陶しいのです。


192 :デフォルトの名無しさん:04/12/19 20:33:38
Stream.Clone(int start, int end, System.Stream.FormatStyle);

193 :デフォルトの名無しさん:04/12/19 22:23:22
>>149
痛すぎw

194 :デフォルトの名無しさん:04/12/19 22:48:02
すいません。質問です。
GraphicsオブジェクトからImageオブジェクトを作成することは可能ですか?
可能ならどうすればいいか教えてください。

195 :デフォルトの名無しさん:04/12/19 22:52:23
無理。

196 :デフォルトの名無しさん:04/12/19 23:01:48
>>195
そうですか。
いや、PictureBoxからCreateGraphicsでGraphicsを作成した後、
DrawRectangleで四角形を書いてもすぐ消えてしまうので、
どうしたものかと思ったもので。

197 :最凶VB厨房:04/12/19 23:05:22
>>196
ダブルバッファリング

198 :最凶VB厨房:04/12/19 23:23:02
public class Form1:System.Windows.Forms.Form
{
//generated code...
private Bitmap bmp
public void hoge()
{
Graphics g=Graphics.ImageFrom(bmp);
g.DrawRectangle(new Pen(new SolidBrush(Color.hoge),0,0,3,3);
pictureBox1.Invalidate();
}
public void pictureBox1_Paint(object sender , PaintEventArgs e)
{
if(bmp==null)return;
Graphics g=pictureBox1.CreateGraphics();
g.DrawImage(bmp,0,0,pictureBox1.Height,pictureBox.1Width);
}
適当にコンパイルも通さず書いてみた。
ぬるり大量発生の予感。

199 :デフォルトの名無しさん:04/12/19 23:27:03
まずはGraphicsをDisposeしろ。
話はそれからだ。

200 :最凶VB厨房:04/12/19 23:29:58
確かにwよく忘れる。
SolidBrushも8Fとか二つ目にいるなぁ。。。
指摘されて思い出したが
e.Graphics.DrawImageの方がよかったねぇ。

>199ども

201 :デフォルトの名無しさん:04/12/19 23:44:28
>>198
ありがとうございます!

202 :デフォルトの名無しさん:04/12/19 23:58:00
Graphicsはよく言われるけど、PenとかBrushとかFontとかってあんまりDisposeって言われないよね。
この辺も使い終わったらすぐDisposeすべきもののはずなんだが。

203 :最凶VB厨房:04/12/20 00:04:16
なるほど。。。
hoge()の中身をusing{}で囲むといい感じになるかな?

publicもprivateの方がbetterか。
あとはかっこはちゃんと対にしないとだめだめですなw

204 :デフォルトの名無しさん:04/12/20 00:09:30
Java の LinkedList みたいなクラスってないの?

205 :デフォルトの名無しさん:04/12/20 00:11:40
using(Graphics g = Graphics.ImageFrom(bmp))
{
using(Pen pen = new Pen(new SolidBrush(Color.Black), 0f))
{
using(Font font = new Font(FontFamily.hoge 〜〜〜))
{
// 面倒な上に読みにく杉
// using使う時のスコープの深さは一個ぐらいがいいと思うがどうよ?
}
}
}

206 :デフォルトの名無しさん:04/12/20 00:22:12
>>204
2.0でジェネリック型として追加される。

>>205
個人的には、Graphics以外で使う範囲が大きいのはusingを使わずにDisposeするかな。
異なる型もまとめて宣言できれば楽なんだけどね……。

207 :デフォルトの名無しさん:04/12/20 00:50:58
タスクバーもどきを造ろうと思うんですが

他のウィンドウが上にかさならないようにするには
TopMost = true;をする以外に
どんな処理が必要でしょうか?

208 :最凶VB厨房:04/12/20 00:51:35
異なる型もってIDisposableが無い型でもってこと?

oo○(using一発使ってみようかと思ったら意外に使いにくいなぁ。)

209 :デフォルトの名無しさん:04/12/20 00:59:35
using(
  Graphics g = Graphics.ImageFrom(bmp),
Pen pen = new Pen(new SolidBrush(Color.Black),
Font font = new Font(FontFamily.hoge 〜〜〜)){

   // 面倒な上に読みにく杉
   // using使う時のスコープの深さは一個ぐらいがいいと思うがどうよ?
   処理・・・
   
}
こんなかきかたしてぇ・・・

210 :デフォルトの名無しさん:04/12/20 01:03:42
>>207
それで何か不都合が出てから質問すれば?

>>209
コンマでつなぐのは美しくないので、セミコロンで。

211 :最凶VB厨房:04/12/20 01:10:11
private void hoge
{
auto Graphics g=Graphics.ImageFrom(bmp);
}

自動でDispose呼ばれる

[AllDipose]
private void hoge
{
Graphics g=〜〜;
}
{}内で生成されたIDisposable型インスタンスは全部
Dispose呼んでくれる・・・。
こんなんどうだ?w

212 :デフォルトの名無しさん:04/12/20 01:16:34
DataGridViewに関して
包括的に学習したいのですが、
お勧めきぼうぬ。

213 :デフォルトの名無しさん:04/12/20 01:38:49
>>210
でるんだよカス

他のウィンドウ制御しないといかんだろうが
痴呆は病院にかえれよ

214 :デフォルトの名無しさん:04/12/20 02:01:57
(・∀・)ニヤニヤ

215 :デフォルトの名無しさん:04/12/20 14:21:51
ある関数内で、Exceptionが発生した場合、3回までリトライ処理を行います。
2回目、処理が正常に行えた場合でも、Exceptionに飛びます。
どうすれば回避できますか?
※正常に行えた場合は、そのまま終わりたい。
----------------------------------------
private string syori()
{
---処理---
return "成功"
}
catch( WebException webex )
{
// リトライ処理を行う
RetryCnt++;
if( RetryCnt < 3 )
{
syori();
}
throw (Exception)webex;
}

216 :デフォルトの名無しさん:04/12/20 14:28:00
>>215
コードの流れを見れば明らかだと思うが……。

>  catch( WebException webex )
>  {
>  // リトライ処理を行う
>  RetryCnt++;
>  if( RetryCnt < 3 )
>  {
>  syori();
>  }
>  throw (Exception)webex;
>  }

一度catchして、if節でsyori()を行う。
成功したらreturnで呼び出したsyoriの次から実行する。
syoriの次になんて書いてるか分かるね?

ところでわざわざExceptionにキャストする意味はどこにもないんだが。

217 :デフォルトの名無しさん:04/12/20 14:33:40
ありがとうございます。
Exception内で呼び出した関数の中で、returnが呼び出されていても
そこで終わらずに、Exception内の次のステップが実行されるとは
知りませんでした・・。

218 :217:04/12/20 14:46:44
何度もすいません。
リトライ実行時以外(3回以上失敗)、Exceptionを返したいのですが
下記コードだと「値を返さないパスがあります」と怒られます。
どうコーディングすれば宜しいでしょうか。
------------------------------------------
catch( Exception ex )
{
// リトライ処理を行う
RetryCnt++;
if( RetryCnt < 3 )
{
this.UploadFile( prm_strUrl, prm_strCmd, prm_intNo, prm_strUserId, prm_strUploadFile, prm_strReName );
}
else
{
throw ex;
}
}

219 :デフォルトの名無しさん:04/12/20 14:50:53
だからコードの流れを追えよ。
返値が必要なのに返されてないんだろ?

220 :デフォルトの名無しさん:04/12/20 15:17:51
>>209
using(Graphics g = Graphics.ImageFrom(bmp))
using(Pen pen = new Pen(new SolidBrush(Color.Black))
using(Font font = new Font(FontFamily.hoge 〜〜〜)) {
  // 一応これで見かけ上の深さは一個だが…
  // 処理・・・
}

これでどうよ。もっとも見かけ上の深さが1個になっただけで
内容的には深さ増えてるんだけど。
逆にそのおかげ(?)でDisposeが呼ばれる順番が
内側から(上記だとFont, Pen, Graphics)になることが保証される。
まー、いちいちusing, usingって書かなきゃならんのは確かに面倒だがな…

221 :デフォルトの名無しさん:04/12/20 15:56:25
>>217
this.UploadFileが成功しても3回同じ事しそうだが

一部分だけじゃなく周辺コード全部みせた方が的確なアドバイスもらえるぞ、きっと


222 :デフォルトの名無しさん:04/12/20 15:59:54
>>220
そだね、いいかんじ。最近コードかいてなかったので当たり前のことにきづかなかたーよ。感謝。

>>217
自分ならこうする。
void? syori(){}

bool syoriWithBoolRet(){
 bool ret=true;
 try{
syori();
}
catch(){
ret=false;
}
return ret;
}

? AMethod(){
bool result=false;
long count=0;
while(result==false&&count<3){
result=syoriWithBoolRet();
}
if(count>=3){
  throw Exception();
}
}

223 :デフォルトの名無しさん:04/12/20 16:08:25
>>222
そのコードじゃ呼出元で例外の特定ができないから好ましくない。
boolの代わりにExceptionを返すようにして、成功ならnullを返すとか。
//可読性は落ちてしまうが。

224 :デフォルトの名無しさん:04/12/20 16:14:24
>>217
漏れなら単にこうするぞ。

RetryCnt=3;
while (RetryCnt > 0)
{
 try
 {
  syori();
  return;
 }
 catch (Exception e)
 {
  if (--RetryCnt == 0)
   throw(e);
 }
}

225 :217:04/12/20 16:44:28
皆さん、沢山のアドバイス、ありがとうございます。
泣きそうなくらい嬉しいです。
下記に修正しました。
---------------------------------
private void Syori( string prm_strData )
{
return "成功";
}
catch( Exception ex )
{
// リトライ処理を行う
RetryCnt++;
if( RetryCnt < 3 )
{
return this.Syori( prm_strData );
}
else
{
throw ex;
}
}

226 :デフォルトの名無しさん:04/12/20 16:54:42
Syori()が例外をスローするんと違うの?

>>224のコードが自然だと思うが

227 :デフォルトの名無しさん:04/12/20 17:37:06
Windows.Forms.TextBox にて、フォーカスを取得した時に
SelectAll() すると入力されている文字列が全て選択されてるのですが、
これをクリックの時に行なうにはどうしたらよいのでしょうか?

クリックの時といっても、初回クリック時は全選択で、2回目移行は
クリックした位置にキャレットを移動したいのですが、
1回目のクリック、2回目のクリックである事を自分で実装しないといけないの
でしょうか?



228 :デフォルトの名無しさん:04/12/20 18:11:30
switch文で複数の条件を使いたいときはどのようにすればよいでしょう?

switch(flg) {
case 0:
case 1:
//処理
break;
case 0:
case 2:
//処理
break;
case 3:
// 処理
break;
}

みたいに 0 の時は 1 でも 2 でも処理したい、という感じです。
どうかよろしくお願いします。

229 :デフォルトの名無しさん:04/12/20 18:12:54
goto

230 :212○rz...(放置プレイ):04/12/20 20:38:07
>>224
どうでもいいことですよ。
どうでもいいことですけど、
あえて指摘させて頂きます。

while (RetryCnt > 0)
if (--RetryCnt == 0)

これって、重複してません?

>>228
private bool _case2Func(object something)
{
____//the same process shown in the range of case 2
____something = something + (string)anything;
}
を追加し、

switch(flag){
____case 0:
_________case0Func();
_________case1Func();
_________case2Func();
________break;
____case 1:
________(以下同様)これどうよう?
}



231 :212○rz...(放置プレイ):04/12/20 20:39:24
とまぁ、アンダーバーでコードを見やすくしてみたんですけど、
どうですか?
usingの投稿を見て、思いつきました。

232 :212○rz...(放置プレイ):04/12/20 20:40:36
と、調子に乗ってみるものの、
224さん、それどうやったの?

ちょっと逝ってきます ○rz.. =3

233 :デフォルトの名無しさん:04/12/20 20:41:35
&nbsp;

234 :212○rz...(放置プレイ):04/12/20 20:44:01
  テストしてみました。
  スペース2
    同4

↑あ、ほんとだ!! うまくイッタ!! (と、予めうまくいってみるテスト)

235 :デフォルトの名無しさん:04/12/20 20:54:43
>>230
例外をスローする、しないの判断は君ならどうする


236 :デフォルトの名無しさん:04/12/20 21:17:31
Windows Forms です。

KeyDown と KeyPress の使いわけは何か意味があるのでしょうか?

KeyDown は全てのキーのイベントが発生するので、あえて KeyPress を
使う意図がわかりません。

このあたりの使いわけに関してアドバイスを頂けるとうれしいです。
よろしくお願いします。

237 :デフォルトの名無しさん:04/12/21 00:41:07
どのキーが押されたかを知りたいならKeyUp/Down
どの文字が入力されたかを知りたいならKeyPress
各イベントを表示する簡単なプログラムを作れば実感できるよ。

238 :デフォルトの名無しさん:04/12/21 02:09:01
DataGrid(ASP.NET)で編集モードでの入力値を取得するのに

 ((TextBox)(e.Item.Cells[1].Controls[0])).Text

のようにしてるのですが、なぜか入力した値ではなく編集前の
値が取得されてしまいます。
ちょっと訳が判りません。教えていただけると有難いです。


239 :デフォルトの名無しさん:04/12/21 09:53:00
画像のサイズチェックを、↓のように書くと
同じファイルを見ているのに、微妙に値が変わっています。
もっと正確なサイズを取得出来る方法ってありますか?

fileinfo = new FileInfo( filepath );
size = fileinfo.Length;

240 :239:04/12/21 09:55:12
自分で書いてて、意味が分らなかったので、訂正します。
↑のようにコーディングして、2回同じファイルのサイズを取得してみたら
サイズが1回目と2回目で異なっています。
なぜでしょうか。


241 :デフォルトの名無しさん:04/12/21 10:01:19
再現しない。

242 :デフォルトの名無しさん:04/12/21 11:47:18
コントロールのイベントで、他の DLL に存在する関数を呼ぶ事は
できますか?

例えば、

public void KeyPress_Common(object sender, KeyPressEventArgs e)
{
// 処理を記述
}

と書いてあるクラスを用意して、

別のフォームのコントロールの KeyPress イベントで、
KeyPress_Common を呼びたいのですが…。


243 :デフォルトの名無しさん:04/12/21 11:55:13
一体オブジェクト指向というものを(ry

そのメソッドがstaticなら呼べる。
他のDLLとか自アセンブリ内とかは参照設定してる限り関係ない。

244 :デフォルトの名無しさん:04/12/21 12:48:44
DataGridView
http://msdn2.microsoft.com/library/8bbkky19.aspx
これって、めっちゃ便利じゃないですか?
codeprojectとかにも、DataGridで再現してるのあるけど、
一発な予感・・・

245 :212:04/12/21 12:50:17
http://msdn2.microsoft.com/library/d9z93601.aspx
事故レスすまそ。
ここみて、勉強します。
is subject to change...仕方ない。

246 :デフォルトの名無しさん:04/12/21 12:56:40
DataGridViewなんかまだましな方さ。
RaftingContainer周りなんか英語ですらまともに情報がない。

247 :デフォルトの名無しさん:04/12/21 17:43:22
画像のリサイズ(圧縮)は、どうすればよいのでしょうか

248 :デフォルトの名無しさん:04/12/21 18:12:25
リサイズと圧縮はまた意味が変わってくるがね。

Bitmapの全てのメンバをチェックしてみたらどう?
特に一番最初のとか。

249 :デフォルトの名無しさん:04/12/21 21:16:21
クライアント端末で入力したキー値を
サーバ端末のアプリに送ろうとしています。

で、以下の様に実現しようとしています。

1:
クライアント端末でキャッチしたKeyDownイベントの
KeyEventArgs.KeyCodeプロパティ値(Form.Keys型)を
サーバに転送する。

2:
サーバに転送されたキー値をSendKeys.Send(string keys)で
のアプリに流す。

3:
キーが入力されてから、それをサーバに流す過程の何処かで、
[Form.Keys]→[SendKeys.Sendのパラメータ文字列]の変換を行う。

3番の変換部分で面倒なコンバータを書かねばならず
ちょっといやな感じなのですが、
何か別の効率的な方法ありませんか?


250 :デフォルトの名無しさん:04/12/21 21:24:34
Win32APIのkeybd_event/SendInputを使うとか。

251 :前スレ989:04/12/21 22:08:54
移行してたことに気づかず、前スレに投稿してしまいました。

アプリケーション上のListViewからドラッグしたListViewItemを
デスクトップやエクスプローラで表示されているフォルダにドロップした際に、
ドロップ先フォルダのパスを取得する方法を知りたいのです。

よろしくお願いします。

252 :デフォルトの名無しさん:04/12/22 00:04:31
HttpWebRequestつかっているんですが、
指定したURLが404だったり500だったりした場合、
StatusCode調べれば済むんですが、
鯖落ちなどでタイムアウトになった場合、何処で調べられますか?
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
して res.って入力してインテリセンスの候補探してみたけど見当たらないです

253 :デフォルトの名無しさん:04/12/22 00:09:53
WebException.Statusではないかね。

254 :デフォルトの名無しさん:04/12/22 00:24:08
ごくごく簡単なことなのですが、RichTextBoxで
文字列に下線つけるのは簡単ですが、これを波線(VCの怒られたときの
エラー表示)に近いものを表示する方法はないですよね?
なければ下線であきらめます。

255 :デフォルトの名無しさん:04/12/22 00:26:15
ないね

256 :デフォルトの名無しさん:04/12/22 00:41:55
Rtfプロパティは{get; set;}なので直接Rtfをいじるという手はある。
Rtfの書式とかはしらん。

257 :デフォルトの名無しさん:04/12/22 13:02:53
ネットワーク上にあるファイルのサイズを知るにはどうしたらよいのでしょうか?
VC++を使っていたときはInternetSetFilePointerのFILE_ENDを見ればよかったのですが・・・

C#での方法をご存知なら教えてくださいませ

258 :デフォルトの名無しさん:04/12/22 13:15:29
ガ━━ΣΣ(゚Д゚;)━━ン
新スレが出来てたのか!!

ここってC++マネージ拡張も質問していいのかなぁ?

System::UInt32 uint32 = 100;
System::Object* obj = uint32;

これをやると
'unsigned int' から 'System::Object __gc *' に変換できません。
って出てうまくいきません。なんか方法があるのでしょうか?

C#でいう感じを書きたい
uint a = 100;
object obj = a;

259 :257:04/12/22 13:17:21
自己解決できますた。スレ汚しスマソ
WebResponse.ContentLength を使うのね

260 :デフォルトの名無しさん:04/12/22 13:38:40
>>258
スレ違いだが __box(uint32);

261 :デフォルトの名無しさん:04/12/22 13:45:22
>>260
有難うございます。
すごい助かりました(・∀・ )

262 :デフォルトの名無しさん:04/12/22 15:59:28
DateTime な 2つの変数の経過分数を求めるにはどのように
したらよいのでしょう?方法を教えてください。よろしくお願いします。


263 :デフォルトの名無しさん:04/12/22 16:04:53
まずDateTime同士を引き算して、その型を調べてみろ。

264 :デフォルトの名無しさん:04/12/22 17:00:49

static char *myname = {"NAMAE"};

void main(void)
{
char *copyto, *copyfrom; /**/
copyfrom=myname;
copyto=(char*)0x00210000;
while(*copyfrom)
{
*copyto=*copyfrom;
copyto++;
copyfrom++;
}
}

一文ずつの動作説明の宿題なんです。助けて!



265 :デフォルトの名無しさん:04/12/22 17:02:28

static char *myname = {"NAMAE"};
void main(void)
{
char *copyto, *copyfrom; /**/
copyfrom=myname;
copyto=(char*)0x00210000;
while(*copyfrom)
{
*copyto=*copyfrom;
copyto++;
copyfrom++;
}
}
一文ずつの動作説明の宿題なんです。助けて!


266 :デフォルトの名無しさん:04/12/22 17:22:01
>>265
いやだ

267 :デフォルトの名無しさん:04/12/22 18:50:18
static char *myname = {"NAMAE"}; //
void main(void) // main の定義
{ // main 開始
char *copyto, *copyfrom; // copyto, copyfrom を char 型のポインタ変数として宣言
copyfrom=myname; // copyfrom に myname を代入
copyto=(char*)0x00210000; // copyto に 0x00210000 を char* 型として代入
while(*copyfrom) // *copyfrom が真の間繰り返し
{ // while 開始
*copyto=*copyfrom; // *copyfrom を *copyto へ代入
copyto++; // copyto インクリメント
copyfrom++; // copyfrom インクリメント
} // while 終了
} // main 終了

2重投稿きーつけてなー

それから、C/C++ 系の質問は、次回からは

さゆがC/C++の宿題を片付けるの 36代目
http://pc5.2ch.net/test/read.cgi/tech/1102753497/l50

で聞くように

268 :デフォルトの名無しさん:04/12/22 21:03:12
あれ。ここってC/C++のスレだっけ。
と思った一瞬。

269 :212○rz...(放置プレイ):04/12/22 22:42:24
あれ。なんでC#の宿題でないんだっけ。
と思った一瞬。

270 :デフォルトの名無しさん:04/12/22 23:48:09
クリスマスプレゼントください。
Aつうクラスのスタートボタンを押すとBつうクラスで、とあるフォルダの中のファイルの
作成を監視します。
BつうクラスからAに出来たよーって通知したいんだけどデリゲートとイベントを使って
通知すればいいくらいの理解しかなく・・・。
スケルトンください。

271 :デフォルトの名無しさん:04/12/22 23:55:56
C#でMSSQL Serverのデータベースをバックアップする方法ってありますか?

272 :デフォルトの名無しさん:04/12/22 23:56:12
>>270
class B {
    public event EventHandler Completed;
}

んで B から通知を受けたい奴は

b1.Completed += new EventHandler(b1_Completed);

でメソッド登録しる
B が通知を配布したい場合には

Completed(this, null);

を実行しる

っていうかまずぐぐれ

273 :デフォルトの名無しさん:04/12/23 00:10:13
>>272
サンタさんありがとう。
ぐぐります・・・。

274 :クリスマスプレゼントに彼女ください:04/12/23 04:25:51
>>270
>BつうクラスからAに出来たよーって通知したいんだけどデリゲートとイベントを使って

デリゲートとイベント使えばいいと思うのだが、何か問題があるの?
スレッド使ってるなら他にもいろいろと気をつかうことあるよ。

275 :デフォルトの名無しさん:04/12/23 11:54:43
>>274
使えばいいくらいの認識しかない奴は、そんなところにまで気を回せるわけがないと思われ

276 :デフォルトの名無しさん:04/12/23 12:18:44
イベントでビギンインボーク見たいのはできんのか?

277 :デフォルトの名無しさん:04/12/23 13:08:56
>>276
以下のような感じでかけるんじゃない?

event ClickDelegate Click;
override OnClick()
{ // fire Click event
 foreach( Delegate d in Click.GetInvocationList()) {
  Control c = d.Target as Control;
  if (c != null && c.InvokeRequired)
   c.Invoke(d);
  else
   d();
 }
}
非同期で良ければ、BeginInvoke/EndInvokeの方がデッドロックの心配が少なくて好きだけど。

278 :デフォルトの名無しさん:04/12/23 13:18:57
>>270
>>272の人に付け足させてもらうと、
FileSystemWatcherの何らかのイベントハンドラで
Completed(this,null)を呼び出せばいいんじゃないかと。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemiofilesystemwatcherclasstopic.asp

279 :デフォルトの名無しさん:04/12/23 14:39:05
DataGridView で、ColumnをSortしたら、
CellのContentのNumberが以下のようにSetされてると
うまくいかないよ

1,2,3,4,5,6,7,8,9,10

1,10,2,3,4,5,6,7,8,9

一応、ColumnのDefaultCellStyleでCellのContentを
全般から数値に変更してあるだけど・・・

280 :デフォルトの名無しさん:04/12/23 14:58:14
DataGridViewってC#2.0だったっけ?
よくわからんけど string としてソートされているのか。
ListViewでもやるように自分でソートを定義すればいいんじゃないの

281 :デフォルトの名無しさん:04/12/23 15:19:00
>>280
そこんとこ、もう少し詳しくお願いします(・人・)

282 :デフォルトの名無しさん:04/12/23 15:25:56
VS2003でTabPageの派生クラス作って、デザイナの表示をすると
出来損ないのデザイナみたいなものが表示されるけど、なにこれ?

で、デザイナ上でコントロール配置したら、生成されるコードも中途半端なんだけど。
InitializeComponent()は呼ばれないし、Controls.Add()もしないし、
自分で書けってこと?

283 :281:04/12/23 15:47:34
http://66.102.7.104/search?q=cache:qxlpo-75o0gJ:dobon.net/vb/dotnet/control/lvitemsort.html+ListView%E3%80%80Sort+%E6%95%B0%E5%AD%97&hl=ja&lr=lang_ja
一寸の兆しが

サンクスコ

284 :281:04/12/23 16:04:04
http://msdn2.microsoft.com/library/wstxtkxs.aspx
これでつか

285 :デフォルトの名無しさん:04/12/23 16:16:50
>>282
どうしてもWindowsフォームデザイナを使いたければユーザーコントロールを作って

public class UserControl1 : UserControl
{
    // 略
}
public class MyTabPage1 : TabPage
{
    public UserControl1 userControl1;

    public MyTabPage1()
    {
        userControl1 = new UserControl1();
        userControl1.Dock = DockStyle.Fill;
        this.Controls.Add(userControl1);
    }
}


286 :282:04/12/23 16:46:44
>>285
サンクス。TabPageの代わりに普通にユーザーコントロール作って
できたコントロールをTabPageに貼り付けるんですね。

それにしても、あの出来損ないのフォームデザイナはなんなんだ。

287 :281:04/12/23 16:51:27
DataGridViewで単に数字順に並べたいだけなのに
IComparerインタフェースを使わなきゃならないんですか・・・

288 :281:04/12/23 17:03:33
http://blogs.users.gr.jp/naka/archive/2004/12/12/6577.aspx
はぁ、ちょっとかわったわけね・・・

289 :デフォルトの名無しさん:04/12/23 18:53:19
有識者の方々、ちょいと御知恵おかしくださいまし

WinXP純正のペイントで直線を選択してドラッグした際の線の処理ってどうやって実現してるんでしょう?

線を引いた画像にDrawImageを使って元画像を貼り付けることによって線を消してたんですが
ペイントのそれと比較するとCPU使用率が比べ物にならんくらい重いんです
BitBlt使っても結果変わらんみたいなんでなんか小技が有るんでしょうか...


290 :デフォルトの名無しさん:04/12/23 18:58:36
>>289さん
ControlPaint.
で反転矩形とか反転直線が引けますよ。

で、質問なのですが、asp.netで
DataSet.Tables[0]に日付でソートされていないランダムなデータがあるんですが
これをソートしてXMLに書き出す(Dataset.WriteXML())するにはどうしたらいいんでしょうか?

DataViewを使えば何とかなりそうな気がするんですが使い方がわかりません…

291 :289:04/12/23 19:45:37
>>290
返答ありがとうございます

すみません、289では書いてませんでしたが変転させずに実現したいんです。
んでDrawImageとか使ったんですが重いなっと...

もうちっと調べてみます



292 :デフォルトの名無しさん:04/12/23 21:37:44
>>290
データベースから引っ張ってくる時にソートする。



DataTable.Clone、DataTable.Select(string, string)、DataTable.ImportRow
辺りかなぁ。

293 :デフォルトの名無しさん:04/12/23 21:54:33
>>278
サンタさんありがとう。

294 :288:04/12/23 22:31:08
DataView dv = getData();
DataTable dt = new DataTable();
dt = dv.Table.Clone();
this.dataSet2.Tables.Add(dt);
dataSet2.WriteXML()
でいけました。
ソートはgetDataでやってます。
ありがとうございました。

295 :288:04/12/23 22:37:24
ぐはっ 別のファイル見てた…
>>294
のコードだとdtに何にも入って無かったです…

296 :デフォルトの名無しさん:04/12/23 22:55:16
ただ今UDPで非同期通信を行っております(受信)。
開始と終了がボタンイベントで行うようにしております。

開始時に、Socket.BeginReceiveFromメソッドをスレッドでまわして使用して、
コールバックにIAsyncResultとしてソケットを渡してます。
しかし、終了時にThread.AbortとSocket.Closeを行うと、
コールバックに入ってしまい、Socket.EndReceiveFromメソッドで、
ソケットが破棄されているためアクセスできないと怒られます。

終了時の処理はどのように行えばよろしいのでしょうか?
ご教授お願いします。

297 :デフォルトの名無しさん:04/12/24 09:32:47
メソッド呼び出しでオブジェクト引数のときにNULL渡す方法がわからんです・・・

298 :デフォルトの名無しさん:04/12/24 10:09:12
おまいの質問がわからん。

299 :デフォルトの名無しさん:04/12/24 12:22:56
null渡すと変換で金と文句言われます。・・・

300 :デフォルトの名無しさん:04/12/24 12:26:19
P/Invoke(DllImport)の話と見たが、関数定義ぐらい書け。

301 :最凶VB厨房:04/12/24 18:24:35
>>296
よくわからんが、
Socket.Shutdownは?
>コールバックにIAsyncResultとしてソケットを渡してます。
IAsyncResult.AsyncStateにソケット入れてるということか?
Socket.EndReceiveFromする時に例外処理すればいいんでないかい?
まっよくわからん

302 :デフォルトの名無しさん:04/12/24 19:44:28
hogehoge = fuga();
sum1 += hogehoge;
sum2 += hogehoge;

これを
sum1 += sum2 += fuga();

のようにかけないんでしょうか?

303 :デフォルトの名無しさん:04/12/24 20:08:47
>>296
Closeした後はエラーになって構わないと思う。catchしておけばOK。
ただし、Thread.Abort なんてものを呼び出すコードは殆どの場合設計ミスなので、そっちを気にするべき。
そもそもBeginReceiveFrom使うならスレッドはいらない。

304 :デフォルトの名無しさん:04/12/24 20:13:24
>>302
a += b += c; は、a = a + (b = b + c); と等価ですので、
意味が違ってしまいます。

305 :デフォルトの名無しさん:04/12/24 20:20:04
それだとsum1の値がおかしくなっちゃうな。
sum1 = sum1 + (sum2 + hogehoge);
fuga()に作用がなく同じ値を返すことが保証されない限りhogehogeは使ったほうが自然。
不自然でよければこんなかんじか。-sum2を前に持ってくるのがポイント
sum1 += -sum2 + (sum2 += fuga());

306 :デフォルトの名無しさん:04/12/24 20:24:21
へー

307 :デフォルトの名無しさん:04/12/24 20:47:44
>>305
C# って加算演算子の左右の評価順序(結合順序じゃなくて)が定義されてたっけ?

308 :デフォルトの名無しさん:04/12/24 21:04:57
優先順位が同じなら左から。
a +  b + c == (a + b) + c

309 :デフォルトの名無しさん:04/12/24 21:07:45
>>307
MSDNの言語仕様の項(7.2, 7.2.1)には次の記述がありますね。
>代入演算子を除くすべての二項演算子の結合規則は左から右です。
.NETですから処理系依存になりそうなことをすれば、執拗に警告やエラーを
出してくれますから、コンパイルが通って普通に動けば大丈夫だと思います。
ときどきやりすぎでないかいと思うくらいです。

310 :デフォルトの名無しさん:04/12/24 21:08:39
>>309
わざわざ結合規則じゃなくて、と書いたのに・・・書いたのに・・・のに・・・

311 :デフォルトの名無しさん:04/12/24 21:14:25
>>310
もう一箇所引用を忘れてた。7.2の方に例が出てますよ。
>式における演算子の評価順序は、演算子の "優先順位" と "結合規則" によって決まります


312 :デフォルトの名無しさん:04/12/24 21:16:46
もちろん評価も左から。
-sum2の値をまずスタックに積んで、それからその後の計算にとりかかるんだから。

313 :デフォルトの名無しさん:04/12/24 21:22:57
>>311
なるほど。7.2.1に詳しく出てますね。日本語版見てあまりの怪しさに英語版でも確認。
このあたりの言語仕様は(コンパイラ屋にとっては面白くないものの)使う側にとっては
C/C++より解りやすくなってますね。

314 :デフォルトの名無しさん:04/12/24 21:56:33
質問です。
ButtonのButton1を左右に関わらずクリックするとMenuItemのMenuItem1を表示したいんですが、どうすればいいんですか?
検索したんですが、よくわかりませんでした。

315 :デフォルトの名無しさん:04/12/24 21:59:52
MouseDown/Upイベントで良さそうだが、
さてMenuItemのMenuItem1を表示ってどういう挙動なのやら。

316 :デフォルトの名無しさん:04/12/24 22:05:05
>>315
表示するのはどうすればいいんですか?
ContextMenuとか必要ですか?

317 :デフォルトの名無しさん:04/12/24 22:18:38
贅沢は、いわん。
贅沢はいわんから、ちょっと助けてくれよ。

DataGridView.Sort()で利用される
IComparer.Compareに関してなんだけど、

2.0から、IComparer<T>なるものが出てきたでしょ?
これ、どうやって使うのよ!!
http://msdn2.microsoft.com/library/twxabsb7.aspx

サンタさん・・・僕のサンタさんは、どこにいるの・・・。上海?

318 :デフォルトの名無しさん:04/12/24 22:24:43
リンク先がSystem.Collections.IComparerというのは何かのシャレか?
何が分からないのかつかめない以上、普通に実装しろよと。

というかDataGridView.Sortに使うのはSystem.Collections.IComparerであってSystem.Collections.Generic.IComparer<T>じゃないじゃん。
この二つは別物だぞ。

319 :317:04/12/24 22:29:41
ち、違うのか・・・?

320 :317:04/12/24 22:30:18
http://66.102.7.104/search?q=cache:RGF75rfYPL4J:blogs.users.gr.jp/naka/articles/6442.aspx+%22IComparer%3CT%3E%22&hl=ja&lr=lang_ja
第6回 IComparer<T>とDictionary(IComparer<T>)

こ、これは、どうなんだ?

321 :317:04/12/24 22:36:30
さ・・さんた・・・・じゃくて・・サンプル、栗。

あ、いや、そうじゃんくて、
もしできたらでいいので、C# DataGridViewのSOrtで
数字を基準に並べ替える方法を教えてください
或いは、その方法が記載されたURLを・・・。
数字を基準に、とは、SOrtの結果が
1,10,2,3,4,5とならないようにすることです、サンタさん。

322 :317:04/12/24 22:43:19
                    シーン
         =≡= ∧_∧
          /   (・∀・ ) <静かにしてます
        〆   ┌  |    | .∈≡∋
         ||  γ ⌒ヽヽコノ   ||
         || .|   |:::|∪〓  .||
        ./|\人 _.ノノ _||_. /|\

323 :317:04/12/24 22:45:36
         =≡=
          /
        〆          . .∈≡∋
         ||  γ ⌒ヽヽコノ   ||
         || .|   |:::| ..〓  .||
        ./|\人 _.ノノ _||_. /|\

          ∧_∧
         ( ・∀・)
         ( ∪ ∪
         と__)__)  旦

324 :デフォルトの名無しさん:04/12/24 22:48:12
死ねばいいと思うよ

325 :デフォルトの名無しさん:04/12/24 22:50:13
調べてみようかと思う気も失せるな。

326 :デフォルトの名無しさん:04/12/24 23:08:51
テキストエディタに表示している文字を選択した状態で
自作ツールに戻って、ボタンをクリックしたら

1.[Alt]+[Tab]で一つ前のアプリ(テキストエディタ)に戻る。
2.[Ctrl]+[C]で前もって選択してある文字列をコピー。
3.[Alt]+[Tab]で自作ツールに戻る。

と言う動作をしたいのですが、そもそもそんな事って出来るのでしょうか?
ヘルプを見てもKey関係の説明はgetばかりだし、(setで出来るのかな?)
キーの動作と言えばマクロかなと思って、秀丸で試してみましたけどダメでした。

327 :デフォルトの名無しさん:04/12/24 23:11:27
SendKeysクラスで可能だが。

アナクロだなー。

328 :デフォルトの名無しさん:04/12/24 23:35:23
すいません。基本の基本だと思いますが、ArrayList に保存したオブジェクトを直接いじることってできますか?
例えば、

someObj.Param = true;

ArrayList test = new ArrayList();
test.Add( someObj );

test[ 0 ].Param = false;

ということがやりたいのですが、どうしたらいいでしょう?

329 :デフォルトの名無しさん:04/12/24 23:36:56
>>328
someObj は何のタイプなんだ?

330 :デフォルトの名無しさん:04/12/24 23:39:05
>>329
早速のお返事ありがとうございます。
これは自分で作ったオブジェクトです。

331 :デフォルトの名無しさん:04/12/24 23:39:50
ArrayListにはobject型として格納されるので、
引っ張り出してきた時はobject型として扱われる。
でも実際には作った時の型のインスタンスなんだから、キャストしてしまえばいいのさ。

ちなみにsomeObjが構造体(のインスタンス)の場合、この操作は無効になるんだが、
それが何故かは宿題だ。

332 :デフォルトの名無しさん:04/12/24 23:49:07
>>331
では、

someObj.Param = true;

ArrayList test = new ArrayList();
test.Add( someObj );

SomeObj tmp = (SomeObj)test[ 0 ];
tmp.Param = false;

という感じですね。
JavaScript などでは直接、
test[ 0 ].Param = false;
という風にして配列に格納したままオブジェクトの値を変更することが出来ます。

C# では、
SomeObj tmp = new SomeObj();
tmp.Param = false;
test[ 0 ] = tmp;
という風に一度引っ張り出して再び格納をする必要があるのですね?

構造体の宿題ですが、
オブジェクト => 参照型
構造体 => 値型
この辺りに答えがありそうですね。

333 :デフォルトの名無しさん:04/12/24 23:57:55
>>332
キャストしろキャスト

334 :デフォルトの名無しさん:04/12/25 00:10:26
>>>333
ありがとうございます。
SomeObj tmp = (SomeObj)test[ 0 ];
tmp.Param = false;
という風に引っ張り出すときに (SomeObj) としてキャストをしているつもりですが
この場所でキャストをするのではないのですか?

335 :デフォルトの名無しさん:04/12/25 00:15:32
わざわざ tmp でワンクッション置かんでも

336 :デフォルトの名無しさん:04/12/25 00:15:32
>>332
>  という風に一度引っ張り出して再び格納をする必要があるのですね?

それがclassのインスタンスなら格納し直す必要はない。
インスタンス、つまり実体は一つなんだよ。
やりとりしてるのはインスタンスそのものではなくてその参照なんだ。

本棚に本が並んであって(オブジェクトの実体たち)、
本のリストにそのタイトルが並んでいる(配列とかArrayListとそれに格納されているもの)。
利用者はそのタイトルを指して「GetPage(3)=この本の3ページ目を教えてくれ」とか言うわけだ。
本のリストに直接本がしまわれてる訳じゃない。


>  オブジェクト => 参照型

構造体のインスタンスもオブジェクト。
構造体に対するのはクラス。


>  SomeObj tmp = (SomeObj)test[ 0 ];  
>  tmp.Param = false;  
>  という風に引っ張り出すときに (SomeObj) としてキャストをしているつもりですが
>  この場所でキャストをするのではないのですか?

>332の前半コードと後半コードが変な事になってるな。
後半コードはこの場合あんまり関係なくないか(ArrayListと何の関係もなくなってる)。

337 :デフォルトの名無しさん:04/12/25 00:16:12
>>334
(SomeObj)test[ 0 ].Param = false;

338 :デフォルトの名無しさん:04/12/25 00:19:54
>>337
((SomeObj)test[ 0 ]).Param = false;


339 :337:04/12/25 00:21:02
あうち

340 :デフォルトの名無しさん:04/12/25 00:24:01
>>336 名前:デフォルトの名無しさん [sage] 投稿日:04/12/25 00:15:32

>> 本棚に本が並んであって(オブジェクトの実体たち)、
>> 本のリストにそのタイトルが並んでいる(配列とかArrayListとそれに格納されているもの)。
>> 利用者はそのタイトルを指して「GetPage(3)=この本の3ページ目を教えてくれ」とか言うわけだ。
>> 本のリストに直接本がしまわれてる訳じゃない。

今実際に確認できました!
引っ張り出したオブジェクトの値を変えたら、格納されている値も変わりました。
分かりやすい説明感謝です。

>> >332の前半コードと後半コードが変な事になってるな。
>> 後半コードはこの場合あんまり関係なくないか(ArrayListと何の関係もなくなってる)。
orz

341 :317:04/12/25 00:44:52
放置しないで・・・○rz....

さっきは、まじですまなかった○rz...

頼むから、教えてくれ・・・もう何時間もさまよってます・・・・

342 :デフォルトの名無しさん:04/12/25 02:10:50
死ねばいいと思うよ

343 :デフォルトの名無しさん:04/12/25 02:18:16
調べてみようかと思う気も失せるな。

344 :デフォルトの名無しさん:04/12/25 02:18:33
>>326です。
>>327さんの書き込みをヒントに

System.Windows.Forms.SendKeys.Send("%({TAB})");
System.Windows.Forms.SendKeys.Send("^C");
System.Windows.Forms.SendKeys.Send("%({TAB})");
string mes = (string)Clipboard.GetDataObject().GetData(DataFormats.Text);
MessageBox.Show(mes);

とやってみたのですが、上手くいきません。
クールスイッチが見える時もあるので、Alt+TABは上手くいっているようなのですが、
クリップボードにコピーしてくれません。
何か間違っているのでしょうか?

345 :デフォルトの名無しさん:04/12/25 02:25:51
327を書いてから警告し忘れてた事を思い出した。
やっぱり引っかかったか。

ALT+TABを押してから実際にフォアグラウンドのアプリに切り替わるまで、何十ミリ秒か誤差があるわけ。
SendKeysは「キーボードの入力をシミュレートする」機能だから、
間に時間を挟まないと、切り替わりきる前に次のを実行しちゃうんだ。
だからALT+TABを入力したらそのあとThread.Sleepするなどしてちょっと待つ必要がある。
逆にコピーした後元のアプリに切り替えるのに入力待ちは必要ない。
SendKeysは複数入力も受け付けてくれるので、"^C%{TAB}"なんて書き方もできるぞ。

346 :デフォルトの名無しさん:04/12/25 14:25:44
TreeViewとRichTextBox用意したForm作ったときに変な描画バグがあって困ってます。
TreeView描画し終わった後に、RichTextBoxを再描画(WinProc)で行うと、
なぜか、TreeViewが暴発し300回ぐらい再描画発生し、すべての項目が真っ白
に表示されてしまいます。なぜですか?

347 :デフォルトの名無しさん:04/12/25 14:45:41
それだけ書かれても検証のしようもないし。
変なコード書いてるからだろ、としか。

348 :326:04/12/25 16:43:53
>>326です。>>345さんレスありがとうございます。
>>344のコードの最初のAlt+TABの後に、
System.Threading.Thread.Sleep(1000);
を入れてみたのですが、実行してもコピーしなかったり、
たまにコピーしても何故か一つ前に実行した時に選択した文字列が表示されたり、
よく分からない動作をします。
で、SendKeysをググっていて、SetForegroundWindow()なるものを見つけて、
処理を分ける為とりあえずNotepad限定でやってみようと、見よう見まねで以下のようにやりました。

[DllImport("User32.dll")]
static extern int SetForegroundWindow (IntPtr hWnd);

private void button2_Click(object sender, System.EventArgs e)
{
 Process[] pp = Process.GetProcessesByName("Notepad");
 IntPtr i = pp[0].MainWindowHandle;
 SetForegroundWindow(i);

 System.Threading.Thread.Sleep(500);
 System.Windows.Forms.SendKeys.Send("^C");
 string mes = (string)Clipboard.GetDataObject().GetData(DataFormats.Text);
 MessageBox.Show(this,mes);
}

続く

349 :326:04/12/25 16:44:53
続き

これでは動作は一緒だったので、Ctrl+CをSendからSendWaitに変えてみました。
System.Windows.Forms.SendKeys.SendWait("^C");
すると望み通りの結果が!!

早速、元のコード(>>344)のSend("^c")をSendWait("^c")に変えてみたのですが、
全くコピーしてくれなくなりました。

ふう・・・。何かいい方法はないでしょうか?
Notepadの代わりにAlt+TABと同じように、一つ前にアクティブだったアプリを
取得出来ればどうにかなるかと思うのですが、そんなこと出来るのでしょうか?

350 :デフォルトの名無しさん:04/12/25 16:54:02
全くの素人です。
Windows上で実際の動きを確認しながら覚えられるような
参考書を探しているのですがなにかオススメはありませんか?

351 :デフォルトの名無しさん:04/12/25 18:00:55
>>348
方針を変えて、クリップボード監視という形にしてみるのも一案だ。
Win32APIに深めに浸かる必要があるのが難点だが。

やる気があるなら、必要な関数などを挙げておこう。
IntPtr SetClipboardViewer(IntPtr hWnd);
bool ChangeClipboardChain(IntPTr hWnd, IntPtr hNewNext);
bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
WM_DRAWCLIPBOARD = 0x308
WM_CHANGECBCHIAN = 0x30D

352 :デフォルトの名無しさん:04/12/25 19:16:03
>>350
まったくの素人だとナニが最初の理解のきっかけになるかわからんからなぁ。
お金に余裕があるなら本屋で適当な入門書を3冊くらい買ってきて枕元に
おいとくと、はたとひらめくことがある。

353 :デフォルトの名無しさん:04/12/25 20:11:43
全くの素人はまずコマンドプロンプトで動きを確認しながら覚えるべきだよな。

354 :デフォルトの名無しさん:04/12/25 20:30:04
だな

355 :デフォルトの名無しさん:04/12/26 00:34:54
TreeViewでラベル編集されたら更新するイベントが原因だとわかりましたが、
これ以外の正しいラベルの更新処理わかりますか?
下記の書き方だと、編集した後View上のどこか別要素のラベル1つが編集
された場所と同じ値になってしまいます。つまるところどうやって書けばいいの
ですか?
private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) {
 if(e.Label == null){
  e.CancelEdit = true;
}else{
e.Node.Text = e.Label;
   this.treeNode = treeNode;
   this.treeView1.Nodes.Clear();
   this.treeView1.Nodes.Add(treeNode);
}
}

356 :デフォルトの名無しさん:04/12/26 03:09:22
リストの任意の位置で挿入、削除をひんぱんに行う場合、
CollectionsのArrayListだとC++のvectorやdequeのように
両端以外での挿入、削除が行われた場合、配列が再構成されるのでしょうか?
それともlistのようにリンクを繋ぎ変えるだけなのでしょうか?

357 :デフォルトの名無しさん:04/12/26 08:15:31
ArrayListは内部では配列で管理してるよ。

358 :326:04/12/26 10:58:16
>>326です。>>351さんレス有り難うございます。
せっかく.NET Frameworkを勉強しているのにWin32APIなんて・・・
と思って悪あがきをしていて、GetNextWindow()なるものを見つけました。(^^;
またもや見よう見まねで>>348を元に実装してみたのですが、しかし・・・。

[DllImport("User32.dll")]
public static extern IntPtr GetNextWindow(IntPtr hWnd, UInt32 wCmd);
[DllImport("User32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);

private void button1_Click(object sender, System.EventArgs e)
{
IntPtr hd = this.Handle;
do{
 hd = GetNextWindow(hd, GW_HWNDNEXT);
}while(hd != IntPtr.Zero && !IsWindowVisible(hd));
SetForegroundWindow(hd);

System.Threading.Thread.Sleep(500);
System.Windows.Forms.SendKeys.SendWait("^C");
mes = (string)Clipboard.GetDataObject().GetData(DataFormats.Text);
MessageBox.Show(this,mes);
}

とやってみたのですが、
「名前'GW_HWNDNEXT'はクラスまたは名前空間'TestProgram.Form1'に存在しません。」
とでます。Webやヘルプをみても間違っていないと思うのですが・・・。
試しにGW_HWNDNEXTの所に整数を直接入れるとエラーは出ないので、
何かしら初期値があるのかといろいろ調べてみたのですが、
どこにもそのような記述はなく、何が原因かさっぱりです。

どこが悪いのでしょうか?(改行規制対策で見にくいかもですm(_"_)m)

359 :デフォルトの名無しさん:04/12/26 11:39:36
>>358

GetNextWindow() はWin32 APIだと思うのだが違うのか?

> 「名前'GW_HWNDNEXT'はクラスまたは名前空間'TestProgram.Form1'に存在しません。」
> とでます。Webやヘルプをみても間違っていないと思うのですが・・・。
間違っている。
MSDNはC/C++を対象にかかれていおりこれらの言語には
windows.h(またはそれが include するファイル)に GW_HWNDNEXT が定義されている。
C#から利用する場合はこれらの定義を調べて該当する値を直接入れなくてはいけない。

360 :デフォルトの名無しさん:04/12/26 11:53:03
>>326
gu
ろーばるほっときーでふっくしちゃだめなの?

361 :デフォルトの名無しさん:04/12/26 12:00:31
グローバル

362 :326:04/12/26 12:36:02
何回もすいません。>>326です。
最初に訂正です。>>358ですと、GetNextWindow()じゃなくて、GetWindow()ですね。

>>359さん。
> GetNextWindow() はWin32 APIだと思うのだが違うのか?
結局Win32APIかい!と文末の顔文字で察してください。

>C#から利用する場合はこれらの定義を調べて該当する値を直接入れなくてはいけない。
これをヒントにWebで調べて「2」と言う数字でやってみたところ、
見事!上手くいきました!!
356で書いた「整数を直接入れる」と言う時に「2」は試したんですけど、
希望通りに動かなかったんですよね・・・今となっては謎ですが。

>グリーバルホットキーでフック
これまたなにやら難しそうですね。とりあえず今回は解決したので、
次に問題にぶち当たった時のために、覚えておきます。

てことで、一応解決しました。レスをくれた方々、有り難うございました。


363 :デフォルトの名無しさん:04/12/26 14:26:24
試しに2005入れてみたのですが、
DataGridViewの使いかたがよくわかりません。

Compare?というか<T>とか、そこらへん
がバージョンアップしたみたいで・・・

過去レス読みましたが、317さん誤爆してるし・・・和良。

おながいします。

364 :デフォルトの名無しさん:04/12/26 14:28:27
>>363
Generics でぐぐれ。

365 :356:04/12/26 14:49:47
ありがとうございます

366 :363:04/12/26 16:57:32
http://www.google.com/search?num=50&hl=ja&q=%22Generics%22+%2B+%22Sort%22&lr=lang_ja

一体どれ・・・(⊃。⊂)

367 :デフォルトの名無しさん:04/12/26 17:01:01
317==363にしか見えないが。

DataGridView.SortとIComparer<T>は関係ないと言っている。

368 :363:04/12/26 17:02:38
か、関係ないんすか?

369 :363:04/12/26 17:03:23
犯人「サンプルがほしいなら、マルペケ銀行に300万振り込め」
363「あいあいさー!!」

370 :デフォルトの名無しさん:04/12/26 21:19:22
通りがかりのものですが、
>>363さん、
僕もそれ以前はまったことありますよ。
結局わからずじまいでしたが・・・

371 :デフォルトの名無しさん:04/12/26 22:32:24
俺も俺も。

372 :デフォルトの名無しさん:04/12/26 22:52:59
>>363
そんなに難しくないと思うけど・・・

373 :デフォルトの名無しさん:04/12/26 23:32:11
>>363よいつもここで馬鹿な質問する
俺ですら解ることだぞ?勉強不足じゃないか?

374 :デフォルトの名無しさん:04/12/26 23:33:34
C++本のテンプレートの章じっくり読んでからだな。

375 :デフォルトの名無しさん:04/12/26 23:34:22
質問です。
WebClientでプロキシは使えないんでしょうか?

376 :デフォルトの名無しさん:04/12/26 23:41:36
>>375
GlobalProxySelection

377 :デフォルトの名無しさん:04/12/26 23:48:43
ありがとう!

378 :デフォルトの名無しさん:04/12/27 00:07:47
WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Range: bytes=1000-");

でも

myWebClient.Headers.Add("Range"," bytes=1000-");

でも
クラッシュするよ
たすけてちょんまげ

379 :デフォルトの名無しさん:04/12/27 00:19:26
素直にWebRequest/HttpWebRequestつかっとけ。

380 :デフォルトの名無しさん:04/12/27 01:31:34
ドキュメント読んだら、
#define ABC 300
みたいな使い方はC#では出来ないようなのですが、
各クラスから頻繁にABCを参照したい場合、C#ではどのように解決するのが
最もスマートなやり方はないでしょうか。
いくつかやり方を考えてみたのですが。
1.各クラス内にprivate const intで持つ。 → 各クラスごとに持つということで、ABCの中身が変わったとき非効率的。
2.共通クラスを作って、その中で持つ。 → 参照時に毎回、CommonClass.ABCとしなければならないので面倒。


381 :デフォルトの名無しさん:04/12/27 01:40:03
どうもすいません自己解決しました。
ttp://www.gotdotnet.com/team/ja/team/csharp/learn/faq/default.aspx
>class MyConstants
> {
> public const int A = 1;
> }
>その後、A マクロを使用する場所で、MyConstants.A を使用します。


382 :デフォルトの名無しさん:04/12/27 02:47:52
各種定数を集めたクラスみたいなあり得ない構成は無しだぞ。

383 :デフォルトの名無しさん:04/12/27 02:56:44
へぇ。俺の場合、クラス作って、中にstaticで「定数」書いて、
(定数というか、変更されたら困るんで、getだけのプロパティにする)、
使うたびに、CommonClass.VERSIONみたいにやってるけど?
どうやったらいいのか教えろよ。

CommonClass
{
 public static string VERSION { get { return "5.20"; } }
}

みたいにやっている。


384 :デフォルトの名無しさん:04/12/27 02:56:44
ListViewとListBoxはどのような使い分けになってるのでしょうか?
また、foreach(ListViewItem li foreach ListViewItems)
のような方法は、ListBoxを使ってやる場合どのようにするのが良いのでしょうか?
お願いします。

385 :384:04/12/27 03:06:42
すいません↑
foreach(ListViewItem li in ListView1.Items)
の間違いでした。また、
ListView1.Items[2].Textの様な、要素へのアクセス法は
ListBoxではListBox1.Items[2].ToString()の様にやるしかないのでしょうか?

386 :デフォルトの名無しさん:04/12/27 03:19:33
>>383
382は
class Teisuu {
   public static readonly string Version;
   public static readonly BindingFlags AllAccess;
   public const double PI;
}
みたいななんでもかんでも定数を入れてしまうような非オブジェクト指向的クラスを指してる。
定数もそれに相応しいクラスに入れましょうってこと。

>>385
foreach (object obj in listBox1.Items) {...}
でいいんじゃないか。
アイテムに入れるものの型が決まってるなら
foreach (int num in listBox1.Items) {...}
とかでもいいけど。

>  ListView1.Items[2].Textの様な、要素へのアクセス法は
>  ListBoxではListBox1.Items[2].ToString()の様にやるしかないのでしょうか?

ListViewと違ってなんでも入れられるのがListBoxな以上、当然。
stringを入れるのならキャストだけで良いけど。

387 :デフォルトの名無しさん:04/12/27 03:25:56
>>386
>みたいななんでもかんでも定数を入れてしまうような非オブジェクト指向的クラスを指してる。
>定数もそれに相応しいクラスに入れましょうってこと。
趣旨が分かりました。了解です。


388 :385:04/12/27 03:59:05
>>386
なるほどです。
ListBoxは型制限なくがつがつ使う様ですね!
どうもありがとうございます。

389 :デフォルトの名無しさん:04/12/27 14:48:27
ある拡張子を独自アプリに自動的に関連付けさせるにはどうしたらいいのですか?


390 :389:04/12/27 14:57:58
エクスプローラの「フォルダオプション」-「ファイルの種類」で関連付けをしていますが
これをC#で操作したいのです。

391 :デフォルトの名無しさん:04/12/27 15:00:27
インストーラ使うか、自分でレジストリを操作するか。

392 :デフォルトの名無しさん:04/12/27 15:27:43
C#でPixiaやPictBearレベルのペイントソフトを作ろうとしています。
参考になるサイトや本を知っている方がいましたら教えてください。
よろしくお願いします。

393 :デフォルトの名無しさん:04/12/27 15:30:57
Paint.NETとか言ってみる

394 :デフォルトの名無しさん:04/12/27 16:22:06
stringを扱う時にヌルポチェックしないで、それに時間を費やすのがもったいないからから
予め空文字いれてくれとか言ってる人間を最高にバカにできるいい言葉ないですか?

395 :デフォルトの名無しさん:04/12/27 16:29:44
.NETじゃヌルリだよバーカ

396 :394:04/12/27 16:42:35
>>395

orz

397 :デフォルトの名無しさん:04/12/27 20:44:58
Windows Forms の テキストボックスで ReadOnly = true とした
コントロールの背景色は必ず SystemColors.Control となる、というのは
間違いないでしょうか?

今、テキストボックスから派生したコントロールを作っているのですが
ReadOnly のコントロールの背景色が何になるのかわからなくて。。。

よろしくお願いします。

398 :373:04/12/27 21:19:47
やべ、久しぶりにDataGridViewの並べ替えカスタマイズやってみたら
うまくいかねー(T_T)

どっかサンプルなかったでしたっけ?

399 :397:04/12/27 21:53:24
というか ReadOnly = True に設定するとグレー(SystemColors.Control?)
になるんですが、コントロールの BackColor を適当な色に変更すると
ReadOnly = True にしても、グレーにかわりません。

ReadOnly = True の時、グレーになる条件というのはどういったもの
になるんでしょうか?

一度 BackColor = System.Drawing.Color.Red のように変更すると
BackColor = System.Drawing.SystemColors.Window にしても、
その後の ReadOnly = True でもグレーにかわらず困っています。。。

よろしくお願いします。

400 :デフォルトの名無しさん:04/12/27 22:02:50
>>399
そのためのResetBackColor()。

401 :397:04/12/27 22:23:06
>>400
ありがとうございます。でも System.Windows.Forms.TextBox から
ResetBackColor() はどうやって呼べばいいのでしょうか?

なんとも情けなくて申しわけないのですが、アドバイスお願いします。

402 :デフォルトの名無しさん:04/12/27 22:31:15
へ? 普通にpublicなインスタンスメソッドだけど?
AppendTextを使うノリで使うだけだが?

403 :363:04/12/27 22:48:01
The great thing about generics is
ジェネリックスのいいところは、
now you can have your cake and eat it to,
どちらの長所をも兼ね備えているところです。
because you can define a List<T> [pronounced: List of T].
Tのリストを新たに定義できるので。
When you use a List, you can actually say what the List is a List of,
リストを利用の際、そのリストがどんな内容なのかを実際に定義でき、
and have the compiler strongly type check it for you.
コンパイラが人手に代わって監視してくれる。
So that's the immediate benefit.
そんな機能が簡単に手に入るのだ。

404 :363:04/12/27 22:55:23
http://66.102.7.104/search?q=cache:ChLlsVKUht4J:www.code-magazine.com/articleprint.aspx%3Fquickid%3D0409051%26printmode%3Dtrue+DataGridView+generics&hl=ja
さぱーりわかんねーYO

405 :デフォルトの名無しさん:04/12/27 23:01:09
>>403

テンプレートで検索しろ。
Objectに無理にデータを放り込んだりしなくてよくなる。
てのを応用してかなりおもしろいことができる。



406 :363:04/12/27 23:08:06
http://66.102.7.104/search?q=cache:11xqMNK4ogUJ:www.microsoft.com/japan/msdn/vstudio/2005/express/vwd/readme/+%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88+DataGridView&hl=ja
(T_T)

407 :397:04/12/27 23:42:33
>>402
すみません。できました。インテリセンスにあらわれなかったので、
メソッドを呼べないと思い込んでしまいました(^^;;


408 :デフォルトの名無しさん:04/12/28 00:55:36
WM_PAINTとか定数ってWindows.hに定義してあるっていうけど、
7Kbのそのファイル100万回見ましたけどどこにも定義ないのですが
これからもWM_PAINTとは違うものも使う必要になってくるのでどこで
定義したるかご存知のかたよろしくお願いします。

409 :デフォルトの名無しさん:04/12/28 01:01:56
MSDN/ヘルプの該当項目に定義ヘッダが書かれてる。

410 :デフォルトの名無しさん:04/12/28 01:10:48
>>408
Windows.hからさらにincludeしてるのを100万回見れば出てるよ。
findとかgrep系のコマンドくらい覚えろよな。startメニューの検索でもいいぞ。

411 :デフォルトの名無しさん:04/12/28 05:24:18
Form1にタブコントロール。Form2に"タブの追加"というボタンを用意して、
Form2のボタンが押されるたびにForm1のタブコントロールにタブが追加されるように
するのをモードレス状態で実現するにはどうしたらいいでしょうか?

412 :デフォルトの名無しさん:04/12/28 08:59:09
class Form2 : Form{

    //中略

    public event EventHandler AddButtonClick;
    private void button1_Click(object sender, System.EventArgs e)
    {
        if(AddButtonClick!=null) AddButtonClick(this, EventArgs.Empty);
    }
}

public class Form1 : Form{

    //中略

    private void Form2を表示(){
        Form2 f = new Form2();
        f.AddButtonClick += new EventHandler(form2_AddButtonClick);
        f.Show();
    }

    private void form2_AddButtonClick(object sender, EventArgs e){
        this.tabControl1.TabPages.Add(new TabPage("たb"));
    }
}

413 :デフォルトの名無しさん:04/12/28 10:45:55
webrequestなどで、webから画像を
ダウンロードする前に画像の(縦横の)サイズを知ることは出来ませんか?

414 :デフォルトの名無しさん:04/12/28 11:11:05
ひょっとしてそれはギャグで言っているのか?

415 :デフォルトの名無しさん:04/12/28 11:41:58
>>413
internetexplorerなどで、webから画像を
ダウンロードする前に画像の(縦横の)サイズを知ることは出来ますか?

416 :413:04/12/28 12:11:40
あれ?
無理すぎもいーとこでしたか。。
internetexplorerで読み込んで、即停止を押し、画像が表示される前に
右クリックでプロパチやると画像が非表示状態でも、
縦横サイズはわかるので、全部読み込む前に
わからないかな?と思ったんですが。。ブヒブヒ

417 :411:04/12/28 12:27:44
>>412さん
ソースまで書いていただき、ありがとうございました。
_| ̄|○ ペコ

418 :デフォルトの名無しさん:04/12/28 12:42:26
>>416
そりゃ単にHTMLが指定してる画像サイズを表示してるだけじゃないのかね。

419 :デフォルトの名無しさん:04/12/28 12:42:36
>>416
C#とは何の関係もないのでスレ違いだが、
gif画像ファイルの最初の部分(ヘッダ)に、縦横の情報があるだろうから、
それを見たらいい。全部ダウンロードしなくてもヘッダだけダウンロードした
時点でわかるだろ。


420 :デフォルトの名無しさん:04/12/28 12:46:03
あれ。gifとは言ってないのか。jpgなりpngなり、ヘッダ構造は自分でググってください


421 :デフォルトの名無しさん:04/12/28 12:46:40
指定年月の月末日付を取得するにはどうしたらよいでしょう?

2004/12 の月末日付は 2004/12/31, 2005/02 の月末日付は 2005/02/28 のように
末日を取得したいのですが方法がわかりません。

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

422 :デフォルトの名無しさん:04/12/28 12:49:42
>>421
X年Y月の月末を求める場合、
X年Y+1月1日から、−1日すればOK。
年をまたぐ場合注意。


423 :デフォルトの名無しさん:04/12/28 12:51:53
>>421
DateTime.DaysInMonthメソッド

424 :421:04/12/28 13:06:02
>>423 のやり方でできました。どうもありがとうございました。

425 :デフォルトの名無しさん:04/12/28 19:13:02
このスレにはプロがいるな

426 :363:04/12/28 22:03:14
<<417
i envy you...○rz...

427 :363:04/12/28 22:10:25
>>373
いくら僕のことを馬鹿にしてもいいから
頼むからヒント・・・・下さい・・・。
5行で十分ですので、お願いします。
今、得た情報
1.Generics
2.IComparer<T>はどうやら関係ないらしい
3.テンプレート? >405

必死に検索かけてますが、もうお手上げです。
目の下くまが出来てます。画面見すぎて頭がづきづきします。
僕は馬鹿です。でもがんばります! ちょこっとのヒントをお願いします。

質問
DataGridViewでColumnをSortするときに、
数字列が、1,10,11,2,3,4,5となってしまうのを正しく並べ替えたい。
好ましくは、新たにRows.Add(new object[]{a,b,..})で追加した
行を追加と同時にSortされた列の適切な行番号に挿入させたい。
ただし、前記挿入は、別個メソッドを新設し、それを呼び出すことで
実現してもよいし、好ましくはそのような行挿入時の特殊な操作を
明示的にしなくても前記目的を達成できる簡潔な方法・・・キボンヌ marurz...

428 :デフォルトの名無しさん:04/12/29 00:52:45
グレープシティのコンポーネントでも買えば?悩まないですむよw

429 :デフォルトの名無しさん:04/12/29 01:50:49
>>427
馬鹿にしてるんじゃない、うざがってるんだ。
質問するからじゃない、態度が厨だから。

・IComarerを実装したクラスを定義する。
・Compereメソッドの比較に使われるのはDataGridViewRowインスタンスなので、
 これのCellsから対応するセルの値を取得し、比較する。
・CellEndEditイベントでSortを呼ぶ。引数は上で定義したクラスをその場でnewするなり。

ジェネリクスやらIComerer<T>やらは一切関係ない。

IComperer.Compereの実装が分からないと言うのなら出直せ。

430 :デフォルトの名無しさん:04/12/29 01:54:52
Tablet PC Platform SDKの InkCollector についてです。
Form1にPictureBox1とPictureBox2を用意してインクを下のように宣言して、PictureBox1に実装しています。
InkCollector myInk = new InkCollector(pictureBox1);
実現したいことは、Form1にボタンを用意して、これを押すとPictureBox1には入力不可になり、PictureBox2が入力可能
になるようにすることです。ここで躓いているのが、ボタンを押すと、myInkのハンドルをPictureBox1からPictureBox2に変換する
という方法です。ハンドル先を変える手段を知っている方がいましたら、教えてください。
よろしくお願いします。

431 :デフォルトの名無しさん:04/12/29 02:12:55
>>427
    public Form1()
    {
      InitializeComponent();
      dataGridView1.SortCompare +=
        new DataGridViewSortCompareEventHandler(dataGridView1_SortCompare);
    }

    void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
      if (e.CellValue1 == null || e.CellValue2 == null)
        return;

      int i, j;
      string str1, str2;
      str1 = e.CellValue1.ToString();
      str2 = e.CellValue2.ToString();

      if (int.TryParse(str1, out i)
        && int.TryParse(str2, out j))
      {
        e.SortResult = i - j;
      }
      else
      {
        e.SortResult = String.CompareOrdinal(str1, str2);
      }
    }

432 :416:04/12/29 04:20:50
>>418-420
なるほどです。
どうもありがとうございました!
ググッてみます!

433 :デフォルトの名無しさん:04/12/29 08:04:16
ListViewのViewプロパティをListにした場合
項目が多くなると、横スクロールバーが現れるのですが、
これを縦方向スクロールに変えるにはどうすればよいでしょう?

434 :デフォルトの名無しさん:04/12/29 11:29:35
>>433
無理ぽ。
そういえばView.Listなので縦スクロールってのは見ないよなぁ。

435 :433:04/12/29 12:47:39
がぃ〜ん
どうもありがとうございます。
ListBoxにしますです。

436 :デフォルトの名無しさん:04/12/29 14:01:04
ListBoxだと結局ListView(View.Details)のヘッダ一つと変わらなくなる気がする。

437 :433:04/12/29 15:09:35
detailにした場合上側に項目名の帯?
が出来て邪魔くさいと思ったのです。
帯が消せるならバッチグーですが。

438 :427:04/12/29 17:54:25
神様って、やっぱりいるんだなって、

ふと、思ったよ。 d

439 :427:04/12/29 20:40:21
万事、うまくいっちゃったよ。
まじ、ありがとね、グスン。

440 :427:04/12/29 20:49:09
>>431さんのプルサンでうまくいきますた。
int.TryParseですね。なるほど。
で、objectをstringにしてからintにするのですね。しヴい。

>>429さん
>・IComarerを実装したクラスを定義する。
431さんの手法とどのような点が異なるのですか?
またそれに伴なうメリットとデメリットはどのような点でしょうか。

>・Compereメソッドの比較に使われるのはDataGridViewRowインスタンスなので、
> これのCellsから対応するセルの値を取得し、比較する。
SortComparerの引数がDataGridViewRowを実態とする[ e ]であって、
e.CellValue1が「対応するセルの値」となるわけですか?

>・CellEndEditイベントでSortを呼ぶ。引数は上で定義したクラスをその場でnewするなり。
CellEndEditは、new object[]{a,b,..}をRows.Addしたときに発生するイベントですね。
そのなかに、mydatagridview.Sort();と書いておけばいいのですね。

>ジェネリクスやらIComerer<T>やらは一切関係ない。
○rz...

>IComperer.Compereの実装が分からないと言うのなら出直せ。
mydatagridviewのパブリックメソッドにSortComparerというのがプロパティウィンドウに
あったのでダブルクリックして該メソッドを追加しただけですが、
以上の工程が、「実装」にあたる、と考えても間違っていませんか?

以上、誤解等ございましたら、ご指摘いただきますよう、お願い致します。

441 :デフォルトの名無しさん:04/12/29 20:55:51
http://msdn2.microsoft.com/library/f2hz30sa.aspx

442 :デフォルトの名無しさん:04/12/29 22:04:08
C#でthread勉強していて疑問に思ったのですが、
どうもプログラムXで、thread起動させ(これをAとする)、フォームを終了すると、
タスクマネージャで見てもXは起動したままなんですね。
多分スレッドAの性でなにかなっているんだと予想しましたが、
フォームの×を押した時にちゃんと終了させるにはどうしたらよいのですか?

443 :デフォルトの名無しさん:04/12/29 22:06:08
Thread.IsBackground

444 :デフォルトの名無しさん:04/12/29 22:11:14
>>442
UIスレッドの終了を検知してAを終了するか
AのThread.IsBackgroundをtrue

445 :デフォルトの名無しさん:04/12/29 22:16:54
あるクラスがあって、そこに外部から Hoge.Command += "delete";
みたいにコマンドを追加していって
あるクラスはそのコマンドを読み取って実行…という感じにしたいです。
STDINからだったらConsole.ReadLineつかえばいいんだけど、
これをSTDINからじゃなくてあるクラスから行ないたいです

446 :デフォルトの名無しさん:04/12/29 22:18:36
そうか、がんばれ。

447 :デフォルトの名無しさん:04/12/29 22:22:03
「標準入力からじゃなくてコンソールから」とか、
「標準入力からじゃなくてファイルから」なら分かるが、
標準入力からじゃなくてあるクラスから、ってのがよく分からんのでもっと詳しく。


448 :535:04/12/29 22:53:12
皆さんは、ListViewクラス等で呼ばれているWin32APIがどれか
などをMSDNを掘って調べているのですか?

449 :デフォルトの名無しさん:04/12/30 01:44:05
Splitter にて、画面を上下に分割する Windows.Form を作成しました。

Splitter より上はデザイン時に表示されているサイズを最大としてそれ以上に
広がらないようにしたかった為 Splitter.MinExtra を調整すればいいのかな
思い、Form の SizeChangeed にて、

this.Splitter1.MinExtra =
this.ClientSize.Height -
this.statusBar1.Height -
this.panelUpSide.Height -
((this.Splitter1.Size.Height +1) * 2);

という計算式を入れたのですが、どうもうまいくいきません。

splitter より上の部分が常に同じ位置までしか広がらないようにしたいのです
がどのようにすべきでしょうか?
教えて頂けたら幸いです。よろしくお願いします。

450 :449:04/12/30 02:07:46
>>449 は解決しました。スレ汚しスマソ。

451 :デフォルトの名無しさん:04/12/30 06:20:14
>>450
どう解決したか書かないヤツはホントのスレ汚し。

452 :デフォルトの名無しさん:04/12/30 08:14:12
csファイルをダブルクリックして
その状態でコンパイルすることは出来ないですか?
プロジェクトとかではなくテスト用にcsファイル単体に記述してチェックしたいのですが

453 :デフォルトの名無しさん:04/12/30 09:41:26
>>452
Windows のフォルダオプション

454 :デフォルトの名無しさん:04/12/30 12:07:12
TextBoxにファイルを表示するとき
一行ずつAppendTextするしかないのでしょうか?



455 :デフォルトの名無しさん:04/12/30 12:09:13
Textに代入すればいい。

456 :デフォルトの名無しさん:04/12/30 12:10:42
そもそもAppendTextが一行ずつに限定というわけでもないな。
改行が自動的に追加されるみたいな機能があるわけでも無し。

457 :452:04/12/30 12:49:52
あ、拡張子の関連付けではなく(それはVSインスト時にされてました)
csファイルをダブルクリックで開くと
上のツールバーのDEGUGとかがないため
コンパイル出来ないので困っていました。
スレ違いぽいのでVC#スレに行ってきます!

458 :デフォルトの名無しさん:04/12/30 13:07:47
Control の Focus() と Select()
ってなにがちがうの?

459 :デフォルトの名無しさん:04/12/30 13:49:44
string hoge = "こんにちは";
とソースに書いた場合、標準で「こんにちは」はUTF8のエンコードになっていると思いますが、
string hogeにshift jisの「こんにちは」を代入するにはどうしたらいいですか?

460 :デフォルトの名無しさん:04/12/30 13:54:23
System.StringはUnicode(UTF-16)で保持されてる。
ソース上の文字コードとは何の関係もない。
実行環境がバイト配列を見てこれのエンコーディングが何か一々判断しなきゃいけないなんて馬鹿馬鹿しい事はない。

461 :デフォルトの名無しさん:04/12/30 13:56:08
ドキュメント読んだら分かると思うがstring型はユニコードを格納するものなので
他のコードは入らない。何をやりたいかをもっと詳しく書けば答えられると思うが。


462 :デフォルトの名無しさん:04/12/30 14:18:38
とあるライブラリを使っているんだけど、hogeLib.Send(string message);となっていたのだけど、
Sendする対象がsjisで受付しているのでmessageのエンコードをsjisにしたかったのですが、
無理ですか…。

ためしに\x82\xa4と「う」をsjisの文字コード直接かいたら上手くいったけど、
二バイト目が[\x5c]だったりしたら使えないだろうし、
自動変換するのも大変だろうし…と思ったのです。

とあるライブラリを使うのを諦めるしかないんですかね?

463 :デフォルトの名無しさん:04/12/30 14:21:45
DllImport属性かStructLayout属性あたりにCharSet=CharSet.Ansi

464 :デフォルトの名無しさん:04/12/30 14:27:40
DllImportとかってunmanagedを呼ぶ時ですよね
このライブラリはC#のマネージ関数だから何処に書いていいのか分からないです…


465 :デフォルトの名無しさん:04/12/30 14:49:08
C#初心者です。
WMIクエリの実行結果を、DataGrid上に表示するプログラムをテスト兼練習で作成しているのですが、
ManagementObjectCollectionを上手にDataGridへセットする方法がよくわかりません。

どなたか教えてはいただけないでしょうか?
よろしくお願いします。


466 :デフォルトの名無しさん:04/12/30 14:50:41
そのマネージ関数とやらをどうコーディングしてるのかすごく気になるのだが。


Encoding.Unicode.GetString(Encoding.GetEncoding("shift_jis").GetBytes(str));

一応こういうコードでShift_jisのバイト列をUTF-16で解釈した文字列を取得できる。
1バイト文字を奇数個含んだ文字列の場合、最後の1バイトは切り捨てられるが。

受け取る側もこの逆操作をする必要があるわけで、あり得ないよなぁ。

467 :デフォルトの名無しさん:04/12/30 15:21:36
>>465
どんなのを想定してるのか分からないから、取りあえず。

自前でDataTableに突っ込んでいく。

468 :デフォルトの名無しさん:04/12/30 15:24:26
>>462
引数にstring型を指定しながらShiftJISで受け取るマネージ関数のライブラリって、いったいどんなライブラリだそれ。
イカれてるとしか思えない。


469 :デフォルトの名無しさん:04/12/30 15:57:52
Reg.CreateSubKey( @"System\Hogehoge" ).SetValue( "Size", 444 );
とすると普通に REG_DWORD でレジストリに格納されるけど、
Reg.CreateSubKey( @"System\Hogehoge" ).SetValue( "Size", 0xE0011431 );

Reg.CreateSubKey( @"System\Hogehoge" ).SetValue( "Size", 3758167089 );
とすると REG_SZ で 3758167089 という文字列で格納されてしまいます。

どうしてでしょうか?


470 :デフォルトの名無しさん:04/12/30 16:01:15
>>468
外国製だからそんなの想定していなくて
でもぶちこみたいの

471 :デフォルトの名無しさん:04/12/30 16:20:17
.NETは強制的にUnicodeなんだから外国製とか関係ないし。

472 :465:04/12/30 16:55:56
>>467
>自前でDataTableに突っ込んでいく。
昨日、foreachで回してDataTableに代入していく、という手法も試したのですが、とてつもなく遅い、重いので使い物になりませんでした。

ManegementObjectSearcher mos = new ManegementObjectSearcher();
mos.Query.QueryString="SELECT * FROM CIM_DIRECOTORY";
(中略)
DataTable dt = new DataTable();
foreach(ManagementObject mo in mos.Get()) {
DataRow dr = dt.NewRow();
foreach(PropertyData pd in mo.Properties) {
dr[pd.Name] = pd.Value;
}
dt.Rows.Add(dr);
}
grdResult.DataSource = dt;

実際のソースとは若干違いますが、流れはこんな感じです

CIM_DIRECTORYを条件なしですべて読み込もうとするのが無茶なのは判っています。
ただ2000行くらいまでは読み込みたいので、それに耐えうる手法がほしいのです。(現状では200行もつらい)

なにかしらスマートな手段があると思うのですが、私はまだC#の基本的な手法もあまり知らないので、何かしらサンプル等いただけると助かります。
よろしくお願いします。


473 :デフォルトの名無しさん:04/12/30 16:58:20
>>464
そのライブラリが糞でFA

474 :デフォルトの名無しさん:04/12/30 18:22:51
>>472
それが多分最適解で、しかしそもそもWMIはそういう用途に向かない。

475 :465:04/12/30 19:37:30
>>474
あらら。
ファイルにTSV出力して、エクセルで見る方がいいのかな。

>しかしそもそもWMIはそういう用途に向かない。
そういう用途=ディレクトリやファイルの走査、に向かない?
それはどのような理由からなのでしょうか?
遅いとか、かな?
(ちょっとスレ違いだけど、ご意見いただきたいです)


476 :デフォルトの名無しさん:04/12/30 20:10:53
>>469
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfmicrosoftwin32registrykeyclasssetvaluetopic.asp

>値を展開された値として格納する場合、値を取得して適切に解釈するには、 ExpandEnvironmentVariables を使用します。



477 :デフォルトの名無しさん:04/12/30 20:21:34
>>475
WMIは、色々なデータを統一的に扱うためのインターフェイス。
統一的に扱えるから利便性に優れているけれど、その高い汎用性の代わりに機敏性が失われたりする。
C言語(散らばった関数)とC#(扱いやすい代わりに自由にならないメモリなどのトレードオフ)との比較みたいなものか。


> ファイルにTSV出力して、エクセルで見る方がいいのかな。

再帰でDirectoryInfoをArrayListに詰めていって、
そいつをDataSourceにするとか。

478 :465:04/12/30 20:27:09
>>477
ありがとうございます
とりあえず、もう少しいろいろやってみます。

479 :デフォルトの名無しさん:04/12/31 00:24:52
Windows.FormsのDatetimePicker で、
Formプロパティを Custom, CustomFormatプロパティを yyyy/MM、
ShowUpDown を False と設定すると、
2004/12 の表示で、上下のスピンボタンが表示されます。
ここまでは期待通りの動作なのですが、月にキャレットを移動して(12の部分)
スピンボタンの上下をクリック、もしくは、カーソルの上下で値を増減
させると、

System.ArgumentOutOfRangeException が発生してしまいます。

これを回避する方法を御存知の方がいらっしゃいましたら
教えて頂けないでしょうか?

よろくお願いします。

480 :デフォルトの名無しさん:04/12/31 01:05:35
>>479
こりゃまたひどいバグだねー……。2.0ベータでも直ってないし。
現在の日付部分を書き換えずに新しい年月日で設定しようとするから(2004, 11, 31)とかになって例外が飛ぶと。
/ddまで表示してたら対処される辺り、何というか。

初期設定でValueを現在の年月の1日に設定。
ValueChangedで選択年月の1日に書き換え。

と言うのでどうだろう。

481 :479:04/12/31 02:54:13
>>480
ありがとうございます。
日付の部分を 1 に強制的にかきかえる事で対応できました。
というかバグか…。MS のサイトにバグデータベースとかないでしょうか?


482 :デフォルトの名無しさん:04/12/31 14:26:12
読み込むDLLがファイル出入力つかうのを制限/つかうのかチェックってできますか?
ゲームのAI部分をDLL化すれば面白いかなと思ったけど
ファイル出入力とかを制限できないと危険なので。

483 :デフォルトの名無しさん:04/12/31 15:45:09
>>482
AppDomainとか役立ちそうですが。

484 :デフォルトの名無しさん:04/12/31 17:11:19
ある配列から探したい配列をサーチできるメソッドはBaseクラスライブラリにないでしょうか

Array.IndexOfだと配列から1変数しか探索できないので


485 :デフォルトの名無しさん:04/12/31 18:41:58
>>482
興味深いのでAppDomainによる制限を書いてみた。

//プラグイン用の抽象クラス。AppDomainを使う場合MarshalByRefObjectから継承する必要がある。
namespace Plugins {
   public abstract class Plugin : MarshalByRefObject {
      public abstract void FileRead(string filename);
   }
}

//プラグイン。PluginInstance.dll
namespace Plugins {
   public class PluginInstance : Plugin {
      public override void FileRead(string filename) {
         System.Console.WriteLine(new System.IO.StreamReader(filename).ReadLine());
      }
   }
}

486 :デフォルトの名無しさん:04/12/31 18:42:57
//プラグインのロードと実行

System.AppDomain domain = System.AppDomain.CreateDomain("Plugins");
System.Security.Policy.PolicyLevel polLevel = System.Security.Policy.PolicyLevel.CreateAppDomainLevel();
//原則無許可としてパーミッションセットを作成
System.Security.PermissionSet permSet = new System.Security.PermissionSet(System.Security.Permissions.PermissionState.None);
//実行を許可
permSet.AddPermission(new System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityPermissionFlag.Execution));
//ファイルアクセスを許可する場合はコメントをはずす
//permSet.AddPermission(new System.Security.Permissions.FileIOPermission(System.Security.Permissions.PermissionState.Unrestricted));
polLevel.RootCodeGroup.PolicyStatement = new System.Security.Policy.PolicyStatement(permSet);
domain.SetAppDomainPolicy(polLevel);

Plugins.Plugin p = domain.CreateInstanceFromAndUnwrap("PluginInstance.dll", "Plugins.PluginInstance") as Plugins.Plugin;
try {
   p.FileRead("test.txt");
}
catch (System.Security.SecurityException ex) {
   System.Console.WriteLine("SecurityException : {0}", ex.Message);
}
//ドメインごとアセンブリをアンロード
AppDomain.Unload(domain);


ただ、作成したプラグインのインスタンスは別のアプリケーションドメインに作られるから、
呼ぶたびにドメイン間通信が行われてパフォーマンスがかなり落ちる。
メンバを頻繁に呼ぶのはやめて、大きな仕事をまとめてやらせるべきだろう。

487 :デフォルトの名無しさん:04/12/31 18:50:03
>>482みたいな制限をテラリウムが導入してたな。

488 :デフォルトの名無しさん:04/12/31 19:54:05
ほー、勉強になるな。

489 :デフォルトの名無しさん:05/01/01 04:49:47
高度な話の中で低レベルな質問なんだが、
Bitmapクラスの中身をリセット(newした状態に)したい場合はどうればよい?
毎回newしてたらリソース喰いまくるかGC発動しまくりだと思うんだ。
背景色で塗りつぶすと透過しないしさ。

490 :デフォルトの名無しさん:05/01/01 10:01:07
>>489
いまいち何をしたいのか分からないのだが。
元絵をCloneして取っておくとか?
元絵の再取得が難しい(ネットから取得したとか)ならともかく、そうでないならnewを気にする必要もないと思うけど。

それよりも使い終わったBitmapをDisposeするのが重要。
Image/Bitmapの場合DisposeすればGCと関係なくメモリを解放するようだし。

491 :デフォルトの名無しさん:05/01/01 15:18:18
コンパイルされた日付を実行ファイルが表示するにはどうしたらいいでしょうか?

492 :デフォルトの名無しさん:05/01/01 16:03:02
……ファイルの更新日時?

493 :デフォルトの名無しさん:05/01/01 16:50:14
>>489
>背景色で塗りつぶすと透過しないしさ。
?透過させたいんなら透過色(Color.Transparentとか)で塗りつぶせよ。


494 :デフォルトの名無しさん:05/01/01 16:58:09
>>492
そうだよカス

GCCにはあるんだよ素人はだまってママのおっぱい吸ってな

495 :デフォルトの名無しさん:05/01/01 18:03:06
>>491=494?
キれてる意味はわかりませんけど。

using System;
using System.IO;
using System.Reflection;

class Test
{
  public static void Main()
  {
    Assembly asm = Assembly.GetAssembly(typeof(Test));
    FileInfo info = new FileInfo(asm.Location);
    Console.WriteLine(info.LastAccessTime);
  }
}

こんな感じのことをやりたいのだろうか。
GCCではどんな感じになる/させているのか言っておくと
誰かがきちんと答えてくれる予感。


496 :デフォルトの名無しさん:05/01/01 18:05:58
失礼極まりないな

497 :デフォルトの名無しさん:05/01/01 18:42:21
親パネルの端っこに子パネルを貼り付けて、
子パネル上にマウスが入った場合も
親パネルのMouseEnter、MouseLeaveイベント処理をさせたいのですが、
この場合どうすれば良いのでしょうか?
単純に、子パネルに出入りした場合、親パネルのMouseEnter,Leaveメソッドを呼ぶと
子パネル上から親パネル上にマウスが移動した場合
親パネルから子パネル上にマウスが移動した場合
無駄な処理が増えてしまいます。
(子パネル(Label)は文字のみ表示させて、
文字の表示以外は、子パネルを完全に無視して考えたいのです。)
よろしくお願いします。

498 :デフォルトの名無しさん:05/01/01 19:03:45
「そのパネル上にマウスがあるかどうか」のフラグ変数を作れば?

499 :デフォルトの名無しさん:05/01/01 19:23:04
>>497
そういうことを透過的にやるフレーム作りなよ。
キー処理とかマウスとかフォーカスとかアクティブとか
作れば後が楽

500 :>>491=494:05/01/01 20:18:40
>>495
それですぅうううううううううううううう!
ありがとう。大好き


501 :497:05/01/01 20:31:25
>>498-499
やっぱり単純に再現できるプロパティやらはないのですね。
初心者ッ子なもので、いろいろwebを探してみたいと思います。
どうもありがとうです。

502 :デフォルトの名無しさん:05/01/01 23:45:12
>>494
「GCCにはある」という発言がカスぐあい露呈している。
素直に__TIME__,__DATE__マクロがないのか聞けや。

503 :デフォルトの名無しさん:05/01/02 00:48:03
あるフォームから、別のフォームをモーダルで表示し、そのフォーム上で
ダブルクリックをするとフォームを閉じ呼び出し元に制御を戻します。

その時ダブルクリックされた位置の、呼出し元フォームのコントロールで
MouseUp イベントが発生してしまいます。

この MouseUp イベントを発生させないようにする方法があれば
アドバイス頂けないでしょうか?

504 :デフォルトの名無しさん:05/01/02 01:10:44
一つのフォームにテキストボックスがいっぱいありまして、どれかにフォーカスがあります。
これを強制的にフォーカスを外したいのですが、一つ一つのテキストボックスの .Focused を
見ていくしかないでしょうか?

505 :デフォルトの名無しさん:05/01/02 01:18:27
>>504
単純ですが解決しました。
自分のフォームにフォーカスをあてました。

506 :デフォルトの名無しさん:05/01/02 01:42:57
>>503
それは多分、元フォームからダイアログを開けるためのマウスクリックの分のMouseUpだと思う。
//メニューからダイアログを開けたら発生しないはず。

元フォーム側のダイアログを開ける処理をMouseUpで書くか、あとはフラグ立てるか。

507 :489:05/01/02 04:31:07
ColorやBrushesにTransparentがあるとは知らなんだ。
だが透過色で塗り潰しても描画内容はリセットされなかったよ(´・ω・`)

fieldSurface.Dispose();
fieldSurface = new Bitmap(640, 480);
Graphics g = Graphics.FromImage(fieldSurface);

newとDisposeを使えばこれで意図した動作はしてくれるんだ。
ただ再描画する度にnewするのが気持ち悪くてしょうがない。
Disposeってどこまで信用できるのだろうか?

508 :デフォルトの名無しさん:05/01/02 07:55:33
あるディレクトリがシステムディレクトリ
(RecyclerやSystem Volume Informationフォルダなど)
かどうかを調べるにはどうすれば良いんでしょう?
System.Environment.SpecialFoloderで特殊フォルダーは調べられますが、
ひとつひとつこれと同じかどうかをチェックしなければいけないのですか?

509 :デフォルトの名無しさん:05/01/02 15:38:39
ショートカットファイルの読込を行えるWSHをC#で読むにはどの様にしたらいいのですか?
.lnkを読み込んで実体ファイルパスを知りたいのです。

510 :デフォルトの名無しさん:05/01/02 15:53:22
>>507
ん?

using(Graphics g = Graphics.FromImage(fieldSurface)) {
 g.Clear(Color.Transparent);
}

で駄目ってこと?


511 :デフォルトの名無しさん:05/01/02 17:52:12
現在,ネットワーク越しにファイルを転送するソフトを作っております.
で質問なのですがー
Explorer とかでファイルをコピーする時に,
プログレスバーの上に紙が左から右へ移動する絵が出ますが,
あーいうの(ていうか,可能ならアレそのもの)を簡単に実装する方法はありますか?
何か参照設定して貼るだけーとかだと楽でいいなーと思ったのですが,
自分でビットマップをいちいち描画しなきゃならないでしょうか……

自分でも色々検索したりしたのですが,いかんせん,
アレが何という名称なのかわからないので
どこにもたどり着けませんでしたw

512 :デフォルトの名無しさん:05/01/02 18:21:35
>>511
ProgressBarかな?

513 :デフォルトの名無しさん:05/01/02 21:10:59
>>511
SysAnimate32 (アニメーション コントロール) でAVIを再生している

514 :511:05/01/02 21:48:58
>>513
そうだったのかー!
疑問が氷解しました.どうもありがとう!

515 :489:05/01/03 02:16:19
>>510
Clearメソッドあったのか。FillRectangleしてたよ。orz

516 :デフォルトの名無しさん:05/01/03 10:27:59
Fontを指定した場合の文字列の幅を取得したいのですが、
e.Graphics.MeasureString
(e:PaintEventArgs)
だと、PaintEventArgsが必要となってしまい、
OnPaint関数内とかでしか実行できず
Formを描画する前に文字列の幅を取得することが出来ません。
何かお手軽に文字列の幅を取得するような方法はないですか?

517 :デフォルトの名無しさん:05/01/03 11:38:44
SizeF size = g.MeasureString(str, font);

518 :デフォルトの名無しさん:05/01/03 14:07:19
Graphics.FromHwnd

519 :デフォルトの名無しさん:05/01/03 17:21:19
MemoryStream ms = new MemoryStream();
DataFormats.Format df = DataFormats.GetFormat("hoge");
ms = (MemoryStream)Clipboard.GetDataObject().GetData(df.Name);
String str = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(ms.ToArray());
という形でテキストベースのデータをstrに読み込んでいるのですが、逆にこのメソッドで自分でセットしたデータを読み込ますには
どうしたらいいですか?

DataFormats.Format myFormat = DataFormats.GetFormat("hoge");
byte [] b = System.Text.Encoding.GetEncoding(932).GetBytes("ほげてすと");
IDataObject myCopyData = new DataObject(myFormat.Name,b);
Clipboard.SetDataObject(myCopyData,true);

としても何も読み込まれません。


520 :デフォルトの名無しさん:05/01/03 17:51:13
GetFormat("hoge")のhogeって何?
DataFormats.Textじゃ駄目なの?

521 :デフォルトの名無しさん:05/01/03 18:02:08
hogeでいいよ


  ; .
 `


522 :519:05/01/03 18:11:07
フォーマット名はなんでもいいんですが、生Textではなく
>>619に示した読み込み方で読めないと困るのでその方法を探しているのですが。


523 :516:05/01/03 18:15:24
>>517-518
どうもありがとうございます!
無事出来ました。
が!
Formのコンストラクタ内で使用したのですが、
Graphics g = this.CreateGraphics();
(Graphics g = Graphics.FromHwnd(this.Handle)も同様)
この一行があるとFormのLoadメソッドが呼ばれなくなってしまいます。
これは何故なのでしょう??

524 :デフォルトの名無しさん:05/01/03 18:15:24
MemoryStreamにデータを書き込んで、
dataObject.SetData(typeof(MemoryStream), memoryStream);
とか。

525 :519:05/01/03 19:44:25
>>524さん
いけました。 ありがとうございました。

526 :デフォルトの名無しさん:05/01/03 22:11:19
VisualC# 2005
で、DLLは作れますか?



  ; .
 `



527 :デフォルトの名無しさん:05/01/03 22:28:58
>>526
2003 の時点で DLL 作れた気が。

528 :デフォルトの名無しさん:05/01/04 03:35:58
リソース管理の極論として、
クラス(IDisposable実装)は全てDispose()もしくはusingしる、でいいんか?

529 :デフォルトの名無しさん:05/01/04 04:01:39
Graphicsオブジェクトに描画を行う時、原点は(0, 0)なわけだが、この原点を変更する方法はある?

530 :最凶VB厨房:05/01/04 04:06:31
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpguide/html/_gdiplus_Types_of_Coordinate_Systems_about.asp?frame=true

531 :デフォルトの名無しさん:05/01/04 13:41:08
フォーム作成時に
一瞬アクティブになってから、元のフォームにフォーカスを戻す以外で、
アクティブにしない方法ってありますか?

532 :デフォルトの名無しさん:05/01/05 02:10:18
フォームのフェードイン、フェードアウトがあると聞いてるのですが、
コントロールのフェードイン、フェードアウトはあるのでしょうか?
あるとしたらその方法を教えてください。よろしくお願いします。

533 :デフォルトの名無しさん:05/01/05 16:37:02
GraphicPathってのと
普通にg.DrawLineとかで描くのとって何が違うんですか?

534 :デフォルトの名無しさん:05/01/05 16:51:05
FillPathメソッドを使えるというのは大きな利点だな。
あと操作が増えればGraphicsPathで描画する方が効率がよくなる。

535 :デフォルトの名無しさん:05/01/05 21:49:38
>>533
線の端っこの繋ぎ方が変わる

536 :533:05/01/05 23:34:40
>>534さん
GraphicsPathの方が効率良いんですか。 なるほど。

>>535さん
詳細キボンヌ

537 :デフォルトの名無しさん:05/01/05 23:43:53
インテリセンスみたいに textbox のところに
listbox を表示するみたいな感じのオートコンプリートってどうやって実装するんですか?

ttp://santamartadotnet.hp.infoseek.co.jp/documents/dotnettips/tips044.html
ttp://www.codeproject.com/vb/net/autocomplete_combobox.asp

とかは見つかったんですが、 listbox を使う方法が載ってなくて・・・

コマンドランチャーを作ってるだけなんで、どうしても無理なら ComboBox を使うことも考えてます。

538 :C ◆.6Hqkk7dyk :05/01/06 01:38:01
すいません。質問です。お願いします。

C#.netのtextboxで右寄せカンマ区切り数値入力ってどうやって実現するのですか?
ネットを散々、探したし本も大量に買ってきたが何処にも出ていない。
初心者でも出来るC#みたいな本には3桁までの整数しか扱わないサギみたいな
サンプルばかりで何の役にも立たない。(カンマ入力にならないから)
禁断の○○○の技みたいな本にも書いていない。

一言、「C#で実現できるのですか?」

本当に悩んでいます。よろしくお願いします。


539 :デフォルトの名無しさん:05/01/06 01:44:48
さてそれはSystem.Windows.Forms.TextBoxの話なのか、System.Web.UI.WebControls.TextBoxの話なのか。
それは本当にTextBoxでなければいけないのかどうなのか。

540 :デフォルトの名無しさん:05/01/06 02:28:35
>>537
http://www.codeproject.com/csharp/DIY-Intellisense.asp

>>538
Console.WriteLine("value={0,15:#,##0}", 1234567890);

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconcustomnumericformatstrings.asp

541 :デフォルトの名無しさん:05/01/06 09:22:37
>>538
文字が1文字でも変化するたびに発生するイベント無かったっけ?
それを拾ってカンマを手動で埋め込むとか。


542 :デフォルトの名無しさん:05/01/06 10:55:02
StringFormatでいいだべさ

543 :デフォルトの名無しさん:05/01/06 14:45:46
Debug.Assertが失敗したときにでるダイアログの表示を
プログラム実行中に一時的にすべて止めたいのだけれど、
なにかいい方法はないですか?
TraceSwitchクラスは違った。。。

544 :543:05/01/06 14:59:48
DefaultTraceListenerを継承したらいけました。すんません。m(__)m

545 :デフォルトの名無しさん:05/01/06 15:39:17
.net のクラス関係をUMLず使って説明してるようなリファレンスに近いものって海外書籍でも(・∀・)イイ!!からありませんかね?
まいかいMSDN引いてるような感じなんだけど、全体いまいち把握してないので・・・

546 :r:05/01/06 16:19:50
Makefileについて質問です。
自分で調べて思考錯誤しましたが、これ以上前に進めそうにないので
書き込みします。
2つのソースファイルのグループを、異なるオプションでコンパイル
するためのmakefileを作りたいのですが、現状は、make clean の後の
makeは問題ないが、touch等で更新しても、makeしてくれません。

以下、自分のmakefileです。

CC = sh4-linux-gcc
LD = sh4-linux-gcc
DESTNAME = このファイルを最終的に作りたい
OBJS = なんとか.oたくさん
OPTOBJS = なんとか.oたくさん これと上のグループのオプションを変えたい
.SUFFIXES: .c .o

all: ${DESTNAME}
$(DESTNAME):$(OBJS) $(OPTOBJS)
$(LD) -o $@ $(OBJS) $(OPTOBJS)

CFLAGS = -O3 -Wall -DCPU=V830 -DSYSTEM=GHS -DCPU0 -DSIMULATE -c
OPTCFLAGS = -Wall -DCPU=V830 -DSYSTEM=GHS -DCPU0 -DSIMULATE -c

$(OPTOBJS):
$(CC) -o $@ $(OPTCFLAGS) $*.c
$(OBJS):
$(CC) -o $@ $(CFLAGS) $*.c
clean:
rm -f $(DESTNAME) $(OBJS) $(OPTOBJS)

以上です。
よろしくお願いします。

547 :デフォルトの名無しさん:05/01/06 16:21:09
ややスレ違いだな。他を当たれ

548 :r:05/01/06 16:21:11
板間違えたようです....
場所変えたほうがいいですか?

549 :r:05/01/06 16:21:35
わかりました。

550 :デフォルトの名無しさん:05/01/06 16:38:06
C#で
ArrayList array = new ArrayList();
String[] a;
String str = "0,1,2,3,4,5,6,7,8,9";
のときに
array.Add(str.Split(','));とやっても上手くデータが入ってくれません。
a = str.Split(',');の場合は上手くいくんですが、ご教授いただけないでしょうか?

よろしくお願いします。

551 :デフォルトの名無しさん:05/01/06 16:42:29
ArrayList.Addの引数を調べてみよう。
ついでにAddの一つ下に書かれてるだろうメソッドも調べてみよう。

552 :デフォルトの名無しさん:05/01/06 17:39:16
>>538
NumericUpDownコントロールなら
ThousandsSeparatorプロパティーがあった気がする。
Trueにすると1000ごとにカンマ自動挿入

553 :デフォルトの名無しさん:05/01/06 21:59:18
あるクラスのコンストラクタ内で
文字列の幅を求めたいのですが、
コントロールを継承していないクラスの場合
CreateGraphicsが使えず、Graphicsオブジェクトが取得できません。
こういう場合はどのように文字列の幅を取得するのでしょうか?


554 :デフォルトの名無しさん:05/01/06 22:21:39
コンストラクタの引数でコントロールを受け取る。

555 :デフォルトの名無しさん:05/01/06 22:25:52
やはり、文字列の幅求めるだけでも
よそのコントロールを使ってGraphics取得するしかないのですね。
どうもありがとうございます。

556 :デフォルトの名無しさん:05/01/06 22:34:18
そもそも、その「文字列」が何を指しているのかわからんのだけどね。

557 :デフォルトの名無しさん:05/01/07 01:13:59
DataGridViewにRowDeletingがないので、
RowのDelete『前』の当該RowのValueが取得できません。

myDataGridView.Rows[e.RowIndex].Cells[0].Value.ToString()
は、消された行に繰り上がった行の内容が・・・〇rz...

558 :デフォルトの名無しさん:05/01/07 03:04:41
http://www.amazon.com/exec/obidos/tg/detail/-/0782141765/103-5068626-6615800?v=glance
この本、趣味で個人的に翻訳(索引だけはまだ)してみたんだが、公開しちゃまずいよね?

559 :デフォルトの名無しさん:05/01/07 12:08:39
>>555
Font使ってどうにかなると思う

560 :デフォルトの名無しさん:05/01/07 12:11:13
>558
だめ

561 :555:05/01/07 13:56:42
>559
マジですか!?
どんな感じでやるんでしょう??

562 :デフォルトの名無しさん:05/01/07 14:08:00
>>559
ふぉんとですか!?
どんな感じでやるんでしょう??

563 :デフォルトの名無しさん:05/01/07 17:17:30
MSDN調べるとか、自分で出来ることぐらいやったらどうかと

564 :デフォルトの名無しさん:05/01/07 19:35:24
>>558
出版社に掛け合ってみたらどうだ?「もう出来上がっている」って言えば
強いかも。

565 :デフォルトの名無しさん:05/01/07 19:42:05
>>563
わからないから聞いてんだけど。

566 :デフォルトの名無しさん:05/01/08 16:25:06
>>558
乙……っていうか凄いな
出たら見てみたいっスよ

567 :デフォルトの名無しさん:05/01/08 16:29:22
その手があったか。翻訳ってどれぐらい印税入ってくるのか、あまり期待はできないだろうが・・・。
これ訳して欲しいっていうニーズがあったらやってみたいねえ。


568 :デフォルトの名無しさん:05/01/08 16:43:09
>>567
もう訳せてあるみたいだし、とりあえずこの手の出版社 (日本のでも) に掛け合ってみたらどうか
話が通れば出版社側が全部手配してくれるような気も

俺は出たら欲しいかも

569 :デフォルトの名無しさん:05/01/08 16:57:37
>>568
C# Network Programmingの話じゃなくて、一般的に「この本を訳してほしい」って
ニーズがあればやってみる、という意味じゃないか?


570 :デフォルトの名無しさん:05/01/08 17:23:13
>>567
6%とかそのくらい。
これが多いと見るか少ないかと見るかはケース・バイ・ケースでしょうね。
特に原書に誤りが多い時など(以下愚痴続く

571 :550:05/01/08 20:59:53
>>551
レス遅くなりました。
アドバイス通り調べたところ無事解決できました。
本当にありがとうございます!!!



#あんたサイコーだぜっ!

572 :デフォルトの名無しさん:05/01/08 21:21:27
RichTextBoxって色分け機能がありますよね。
あれを、普通のTextBoxコントロールで実現するにはどうしたらいいんでしょうか?

573 :デフォルトの名無しさん:05/01/08 21:24:40
>>572
無理っぽい

574 :デフォルトの名無しさん:05/01/08 21:30:44
色分け機能が欲しいなら、自分で描画するしか無いんじゃないの?
RichTextBoxでもrtfコードをいじればそこそこ高速に出来ると思うけど。

575 :572:05/01/08 21:41:37
やっぱ無理ですか(´・ω・`)
RichTextBox使います。

あと、.NET Frameworkでは、文字コードは全てUTF16ということなんですが、
textBox1.Text = "はげ"; ←で、画面に表示される文字は、文字コードを変更して表示できるんでしょうか?

576 :572:05/01/08 21:44:40
×文字コードは全てUTF16
○文字列値は全てUTF16

です。
内部文字コードっていうのがよく分からないんです。

577 :デフォルトの名無しさん:05/01/08 21:46:14
>>575
>  textBox1.Text = "はげ"; ←で、画面に表示される文字は、文字コードを変更して表示できるんでしょうか?

わけわからん。
どんなコードだろうが文字は文字だろ。

578 :デフォルトの名無しさん:05/01/08 21:49:23
>>575
文字コードを変更して表示されます。(意味わからんがフィーリング)

ソースが SJIS で記述されていても、コンパイル時点で内部的には UTF16 になります。
ただし、画面上などに出力される時点で、別のコードに変換されてるかもしれません。

579 :デフォルトの名無しさん:05/01/09 01:37:31
コンパイル後の中間コードをバイナリエディタで覗いたら、そういう
文字列はユニコードに変換されて格納されているよ。
そういう問題じゃないのかな?どのみちstringに格納されている
文字列を描画してくれるのはWindowsなので、テキストエディタを
作るなどで文字コードに気を配る必要がある場合以外は問題なし。


580 :デフォルトの名無しさん:05/01/09 02:15:45
内部コードがUNICODEになったのってVB4か5のころからだったような・・
DOS窓は今でもShift-JISだから、ファイルI/Oはutf-8デフォルトだけど
Console.Out,Error,InはエンコードがShift-JIS(Default)になってますね。

581 :デフォルトの名無しさん:05/01/09 02:27:58
こういう文字と文字コードと後正規表現とかのフレームワーク上でのクラス関係がのってる本と買ってないかね。
ほかのクラスとかについてもある程度一覧で載ってるのがあれば生産性あがるんだけどな・・・
MSDNとかで調べるのも玉二時間かかるときあるし

582 :デフォルトの名無しさん:05/01/09 02:34:39
キンタマキンタマ〜

583 :デフォルトの名無しさん:05/01/09 14:22:48
チンコチンコ〜

584 :デフォルトの名無しさん:05/01/09 14:49:38
ArrayListを使って多次元配列を実現したいのですがうまくいきません。
int i, j;
ArrayList arr = new ArrayList();
arr.AddRange(new ArrayList());

for(i = 0 ; i < 10 ; i++)
{
for(j = 0; j <10 ;j++)
{
arr[0][1] = i*j;
}
}
代入するところでエラーが出ているのですが、宣言部分がおかしいのでしょうか?
どなたかご教授頂けないでしょうか。

お願いします。

585 :デフォルトの名無しさん:05/01/09 14:59:26
>>584
さてどこから突っ込もう。

>  arr.AddRange(new ArrayList());

例えばint[]をAddRangeするとしよう。
int[0]、int[1]、int[2]と言う風に順番にAddされていくよな。
int[]の代わりにArrayListをAddRangeしたらどうなる?

>  arr[0][1] = i*j;

これは
list = arr[0];
list[1] = i * j;
の2つに分解できるわけで、まずArrayListのインデクサは何型を返すとヘルプに書かれてる?

586 :デフォルトの名無しさん:05/01/09 15:08:58
>>585
能書きはいいからさっさと正解書けやボケ。

587 :584:05/01/09 15:10:51
>>585
586は自分じゃありません、今調べているところですorz..

588 :デフォルトの名無しさん:05/01/09 15:17:49
色々調べましたが何もわかりませんでした。
やっぱり無理なのですね。

589 :デフォルトの名無しさん:05/01/09 15:21:55
boxingって int -> string とか object -> int とかのこと?

590 :デフォルトの名無しさん:05/01/09 15:27:48
どっとも違うな。
ttp://wisdom.sakura.ne.jp/programming/cs/cs32.html

591 :デフォルトの名無しさん:05/01/09 15:28:50
どっと……  orz

592 :584:05/01/09 15:46:15
>>585
うーむ、解らないです。
ArrayListのインデクサ何を返すかマニュアルから見つけることが出来ないです。
ttp://bbs.wince.ne.jp/ch10/mqbbs.cgi?&FILE=bbs.log.132&MODE=MSG&NUM=6801
によると、object型…

現在これに変えてみましたがよくわからないです。
int i, j;
ArrayList arr = new ArrayList(new ArrayList());
ArrayList arr2 = new ArrayList();

//arr.AddRange(new ArrayList());

for(i = 0 ; i < 10 ; i++)
{
for(j = 0; j <10 ;j++)
{
arr2 = arr[i];
arr2[j] = i * j;
}
}

593 :584:05/01/09 15:50:21
>>585
おい、そろそろ答え書かんかい。もったいつけよって、本当はわからないんだろ?( ´,_ゝ`)プッ

594 :デフォルトの名無しさん:05/01/09 15:54:15
じゃあジャグ配列から考えてみる。
int[][] arrays = new int[3][];
このarraysにint[]を格納していくわけだが、さてどう格納する?

//後段の問題はまず配列の配列を作れてから。

595 :デフォルトの名無しさん:05/01/09 15:57:05
>590
何となくわかった気がする

>584
ArrayList.AddRange メソッド [C#]
ICollection の要素を ArrayList の末尾に追加します。

ってMSDNに書いてた。

596 :584:05/01/09 15:57:43
>>594
それは持ってる本に書いてあります。
arrays[0] = new int [5];
arrays[1] = new int [4];
arrays[2] = new int [6];
と言う形みたいです。

597 :デフォルトの名無しさん:05/01/09 16:09:20
>>596
さて、int[][]はint[]をそれぞれ要素に持つ配列だ。
ArrayListは>592の通りobjectをそれぞれ要素に持つ(擬似的な)配列。

ところでC#では全てのクラス・構造体はobjectから派生している。
つまり全てのオブジェクトはobject型である、と極論できる。
これを利用してArrayListはなんでも入る配列になってるわけだ。

int[]も結局はオブジェクトで、つまり上記の通りobject型でもある。
もちろんArrayListもオブジェクトでobject型でもある。

さて、ArrayListにobject型を追加するにはどう書こう?

598 :595:05/01/09 16:21:21
>597
入れるとき
ArrayList arr = new ArrayList();
ArrayList arr2 = new ArrayList();
arr.Add(new ArrayList());
arr2 = arr[0];
arr2[0] = "The fox is white";
arr2[1] = "The dog is lazy";

出すとき
ArrayList arr3 = arr[0];
string fox = arr3[0].ToString();
string dog = arr3[1].ToString();

じゃないか?

599 :595:05/01/09 16:26:21
すまんがエラー出たので変更

ArrayList arr = new ArrayList();
ArrayList arr2 = new ArrayList();
arr.Add(new ArrayList());
arr2 = (ArrayList)arr[0];
arr2.Add("The fox is white");
arr2.Add("The dog is lazy");

ArrayList arr3 = (ArrayList)arr[0];
string fox = arr3[0].ToString();
string dog = arr3[1].ToString();

600 :584:05/01/09 16:29:39
>>597
こんな感じですが
int i, j;
ArrayList arr = new ArrayList();
ArrayList arr2 = new ArrayList();

arr.Add(new ArrayList());

for(i = 1 ; i < 10 ; i++)
{
for(j = 1; j <10 ;j++)
{
arr2 = (ArrayList)arr[i];
arr2.Add(i*j);
}
}
インデックス範囲をこえていますってエラーが出る。
ってやってたら>>598さんと同じ感じなんですが、合っているのでしょうか。

601 :デフォルトの名無しさん:05/01/09 16:42:00
>>598-600
さて、それなりに正しいけれど理解の方はどうなのかな。

>  ArrayList arr = new ArrayList();
>  ArrayList arr2 = new ArrayList();
>  arr.Add(new ArrayList());
>  arr2 = (ArrayList)arr[0];
>  arr2.Add("The fox is white");
>  arr2.Add("The dog is lazy");

arr2に新しいArrayListを作成。
arrに新しいArrayListを作成して追加。
arr2にarrのインデクス0のオブジェクトをArrayList型として取り出し。

……はじめにarr2に入れたArrayListはどこへ?

>  string fox = arr3[0].ToString();

……まあこれも有りかなぁ。普通はキャストするけれど。

>  for(i = 1 ; i < 10 ; i++)
>  {
>  for(j = 1; j <10 ;j++)
>  {
>  arr2 = (ArrayList)arr[i];
>  arr2.Add(i*j);
>  }
>  }

arrへのAddは一回しかやってないよ?
つまりarrに入ってるArrayListは一つしかないんだけど?

602 :595:05/01/09 16:50:20
いまさらだが、Box化が知りたかっただけなので見守るだけにする。
と1レス消費。

603 :デフォルトの名無しさん:05/01/09 17:21:22
 

604 :デフォルトの名無しさん:05/01/09 17:55:34
ぬるぽ

605 :デフォルトの名無しさん:05/01/09 17:56:14
Box化なら入門書嫁

606 :デフォルトの名無しさん:05/01/09 18:22:54
ぼくのおちんちんはBoxingしたままです
いたいのでUnboxingできません

607 :デフォルトの名無しさん:05/01/09 18:31:08
いつも誰にも相手にされないからもったいぶるんだろうな。
童貞?

608 :デフォルトの名無しさん:05/01/09 18:37:31
ウボォーギンです

609 :584:05/01/09 19:07:14
int i, j;
ArrayList arr = new ArrayList();
ArrayList arr2 = new ArrayList();
ArrayList arr3 = new ArrayList();

for(i = 0 ; i < 10 ; i++)
{
for(j = 0; j < 10 ;j++)
{
arr.Add(new ArrayList());
//object型だからキャスト
arr2 = (ArrayList)arr[i];
//格納
arr2.Add(i*j);
richTextBox1.AppendText(arr2[j] + "\n");
}
}

//取り出すとき配列参照
for(i = 0 ; i < 10 ; i ++)
{
arr3 = (ArrayList)arr[i];
richTextBox1.AppendText(arr3[4] + "\n");
}

どうでしょうか?
一応動作しているようですが、直したほうがいい点あったら教えていただきたいです。

610 :デフォルトの名無しさん:05/01/09 19:47:39
・変数arr2、arr3に最初に代入したArrayListのインスタンスが無駄
・変数のスコープはもっと狭い方がいいかも
・AppendTextのところで「Object + String」をやってる

611 :デフォルトの名無しさん:05/01/09 20:15:53
>610
いい加減教えてやれ。かわいそうになってきたorz

612 :611:05/01/09 20:19:16
ArrayList arr = new ArrayList();

for(inti = 0 ; i < 10 ; i++)
{
for(int j = 0; j < 10 ;j++)
{
arr.Add(new ArrayList());
ArrayList arr2 = (ArrayList)arr[i];
arr2.Add(i*j);
richTextBox1.AppendText(arr2[j].ToString() + "\n");
}
}

//取り出すとき配列参照
for(int i = 0 ; i < 10 ; i ++)
{
ArrayList arr3 = (ArrayList)arr[i];
richTextBox1.AppendText(arr3[4] + "\n");
}

と、こう思った。

613 :デフォルトの名無しさん:05/01/09 20:51:32
ArrayList arr;

arr = new ArrayList();
for(int i=0; i<10; i++){
    arr.Add(new ArrayList());
}

for(int i=0; i<10; i++){
    for(int j=0; j<10; j++){
        ((ArrayList)arr[i]).Add(i*j);
    }
}

for(int i=0; i<arr.Count; i++){
    for(int j=0; j<a.Count; j++){
        int n = (int)((ArrayList)arr[i])[j]
        Console.WriteLine("[{0}][{1}] : {2}", i,j,n);
    }
}

614 :デフォルトの名無しさん:05/01/09 21:08:29
int[,] i32 = new int[10,10]

for (int i = 0; i < 10; i++){
 for (int j = 0; j < 10; j++){
  i32[i,j] = i*j;
 }
}

615 :デフォルトの名無しさん:05/01/10 05:34:42
Control.Invalidate()を呼び出すとそのコントロールのPaintイベントが発生するわけだが、
複数のスレッドが同時にInvalidate()した場合でも、Paintイベントはスレッドセーフになる?

616 :デフォルトの名無しさん:05/01/10 08:32:55
メッセージキューにPAINTメッセージが順に入るだけなので
同時実行はされないような気がするが。


617 :おぼーん&rlo;んーぼお:05/01/10 13:41:38
おぼーん

618 :デフォルトの名無しさん:05/01/10 14:46:59
>>615
Controlのメソッドの呼び出しは、
そのControlを生成したスレッドからしか行えなくなる予感。


619 :デフォルトの名無しさん:05/01/10 14:54:48
Invalidateとかも呼び出しできないようにするのかな・・・
('A`)マンドクセ

620 :デフォルトの名無しさん:05/01/10 15:08:50
2.0からは例外が上がるってどっかのサイトに書いてあったよ
BeginInvoke覚えるか、スレッドはワーカーと割り切るかだねえ

621 :デフォルトの名無しさん:05/01/10 15:13:21
匿名メソッドが使えるようになってInvokeの手間も随分省けるようになるさ。

622 :デフォルトの名無しさん:05/01/10 17:52:58
Invoke よりデッドロックの方がややこしい、一番つらい所は匿名メソッドでも解決しないので辛い、
Form関係は設計失敗だよ、あれは正直なところ作り直して欲しい。

623 :デフォルトの名無しさん:05/01/10 22:10:14
デッドロックってどのこといってるんだ?
そこで起こるのは一般のマルチスレッドで起こりうるものじゃないのか?

624 :デフォルトの名無しさん:05/01/10 22:35:15
ところで>>584はどこ行ったんだ?
個人的には>>614がシンプルで良いと思うけどどうなの?

625 :デフォルトの名無しさん:05/01/10 22:38:19
ただの固定長多次元配列ならそれでいいが、わざわざArrayListを使うんだから可変長を求めてるんだろう。

626 :デフォルトの名無しさん:05/01/10 22:50:31
PictureBox1 += new EventHandler(form2_Click_Button1);

のようにイベントを追加したあとに、追加したイベントを削除したい時には
どうしたらいいのすか?

627 :デフォルトの名無しさん:05/01/10 22:56:21
PictureBox1  -= new EventHandler(form2_Click_Button1);

//なんかコードが変だけど。

628 :デフォルトの名無しさん:05/01/10 23:04:51
Object obj=new EventHandler(form2_Click_Button1);
PictureBox1 +=obj;
PictureBox1 -=obj;
こんな感じ。

629 :デフォルトの名無しさん:05/01/10 23:28:22
「次回は表示しない」のチェックボックスがついたようなメッセージボックスを
時々見ますが、
C#ではそのようなクラスはないですか?


630 :デフォルトの名無しさん:05/01/10 23:40:27
.NETではそんなクラスは無いな。

631 :デフォルトの名無しさん:05/01/10 23:42:15
そんぐらいつくろうよ・・・

632 :629:05/01/10 23:44:45
あればそれに越したことはないと思ってた次第です。
ありがとうございました。

633 :626:05/01/11 00:01:09
>>627
>>628

さっそく試してみます。
ありがとうございました。

634 :584:05/01/11 00:38:06
レス遅くなりました。。
>>624
i,jのfor分は配列に代入する例だったので特に使わない予定です。
わざわざすいません。

>>625
可変の配列を使いたかったです。

たとえるならゲームでPOPする敵って感じです。
敵の数=arr,敵のプロパティ=arr2みたいな風に使おうと思っています。

635 :デフォルトの名無しさん:05/01/11 00:58:15
ttp://jp.thespoke.net/MessageBoard/MessageBoard_ViewThread.aspx?postid=486

あの似顔絵ウィザードも含めて、HomeStyle+ って
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.NET Framework で書かれてるんですね。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
逆アセンブルしてみたら気づきました・・・・。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ああいうのを作品に組み込むのも面白いかも(笑)

MSの製品を逆汗するような奴をMSはMVPに選んでいるんです。MSは逆汗を認めていると

636 :デフォルトの名無しさん:05/01/11 01:00:59
>>634
>  敵の数=arr,敵のプロパティ=arr2みたいな風に使おうと思っています。

そのりくつは おかしい

敵=Enemy抽象クラスから派生したクラス
出現した敵集団=配列

arr2はDQでいう1グループみたいなもんか。

637 :584:05/01/11 03:16:31
>>636
おかしいかなぁ?
FFXIみたいに、フィールド上に何体敵がいるかわからない様な状況考えているのですが。
データをArrayに格納してそれをクラスにする予定です。
Arrayで管理するのがおかしいのでしょうか?…

638 :デフォルトの名無しさん:05/01/11 09:20:52
C#でツールを作って、自分ではXPで動作確認したのですが、
MEのユーザーから、リストボックスの表示がおかしいと
報告がきました。

.netのアプリって、meや98ではうまく動かないのでしょうか?
それとも、自分の作り方が悪い?

639 :デフォルトの名無しさん:05/01/11 10:55:13
既にWindows2000が出ていた時期に
98SEやMeを載せて売ってたPCメーカーの罪は重いよな〜
少し価格を上乗せするだけではるかにいいOSが載せられたのに

640 :デフォルトの名無しさん:05/01/11 11:03:28
>>639
2kの時点では仕方なかった。
コンシューマ用のドライバが全然出そろってなかったんだから。
//鶏が先か卵が先かになっちゃうけど。
色々なドライバが2k対応になったのは実質XPが出てからだよ。
MSの戦略ミスも大きいね。

>>638
どうおかしいのか分からない事には何とも言い難い。

641 :デフォルトの名無しさん:05/01/11 11:05:05
>>639
無理無理。
あの状況で2000一本に絞るにはUIの洗練が足りなかった。
Meの存在がそれを物語ってる。

642 :638:05/01/11 11:29:48
ども。
xpとmeの違いではなくて、ただのバグでした。
リストボックスに項目がひとつだけの時に表示されないという現象でした。
発生条件が特定できたので、自分で対応できそうです。


643 :デフォルトの名無しさん:05/01/11 18:13:41
>>640
当時の自作板じゃ、2000な香具師も結構いた気がする。
漏れもこんな感じだったし。
Dynabook(98SE)、BIBLO(ME)、DeskPower(ME)、自作(Win2000(組んだのは2001年))

性能/価格は自作最強だと思った。これ以降、デスクトップは全部自作w

644 :デフォルトの名無しさん:05/01/11 18:34:38
>643
そろそろスレ違いだと気付け。

645 :デフォルトの名無しさん:05/01/11 18:47:37
>>643
趣味でPCやってりゃRC2が出ていこうは当然2000だろ。
サポートを強いられるメーカーPCに入れるOSとしては価格を含めて
問題ありすぎだったというだけ。

関係ないが組立PCを自作って呼ぶのはいまだに違和感がある。

646 :デフォルトの名無しさん:05/01/11 18:59:42
自選PCかな、実質
ケースを選べるのが一番のメリットだったりする

647 :デフォルトの名無しさん:05/01/11 19:29:22
近頃は、相性とか調べる元気がないので専らショップブランド。

648 :デフォルトの名無しさん:05/01/11 19:32:22
自作の方が安上がりっていう時代もとっくに過ぎたしな。
ショップブランド最高!

でスレ違いなので聞きたいんですが、ちょっとしたプログラム作るときでも
namespaceはちゃんと定義してますか?
使い捨てみたいな奴はついつい面倒で、

--- hoge.cs ---
using xxx
using xxx

class Hoge {
...
}
て感じでゴリゴリ書いてしまうんですが。


649 :デフォルトの名無しさん:05/01/11 19:41:01
最近は相性なんて考える必要もまず無いから自由度だよ自由度。
E-ATXケースで中の取り回しも楽々のHDD5台キャプチャボード2枚さ。

>>648
趣味グラマだけれど。
汎用クラスの場合、自分用の固定名.機能orジャンル(Microsoft.CSharpみたいに)をつける。
アプリの場合、自分用の固定名.アプリ名をつける。
3段以上になる事はまず無いな。

650 :デフォルトの名無しさん:05/01/11 19:49:52
foo(string s)でsがカンマ区切りの4つのデータ以外の形式で渡されたときに
投げる例外ってArgumentExceptionでいいの?
それともMyClassExceptionを定義してそれ投げた方がいいの?
この二つの投げ方の使い分けの基準みたいなのがあったら教えてください。

651 :デフォルトの名無しさん:05/01/11 19:58:22
便乗質問。
あるメソッドを実行する時に、持ってるプロパティが不整合だった場合に投げる例外ってどんなのがいいでしょ?

652 :デフォルトの名無しさん:05/01/11 20:05:16
プロパティの状態が異常だから
InvalidOperationException ではなかろうか。

653 :デフォルトの名無しさん:05/01/11 20:51:12
>>650
ArgumentExceptionで妥当だと思われます。
自前の例外クラスを作るとcatchして例外処理するときに便利だったりしますね。

654 :デフォルトの名無しさん:05/01/11 21:05:55
表現が難しいのですが、ボタンがコンボボックスみたいなのになっている
コントロールというのはどのように実装するのでしょうか?
(Visual Studio の ファイルを開くダイアログの開くのボタンがそのように
なっています)

そのままコントロールが存在すればありがたいのですが、
なければ自分で作ろうかとも考えていまして…。

よろしくお願いします。

655 :デフォルトの名無しさん:05/01/11 23:23:13
>>652
ありがとう。
確かにすごく妥当な解説になってますね。

>オブジェクトの現在の状態に対して無効なメソッド呼び出しが行われた場合にスローされる例外。

656 :デフォルトの名無しさん:05/01/12 01:38:49
グローバルホットキーを設定して、
特定の組み合わせに反応してマウスの各種動作
(左右クリック/ダブルクリック、中クリック/ホイールスクロール)
をさせたいのですが、
(ex: Ctrl+[ を受け取ったときにアクティブなウインドウでホイールスクロール動作をさせたい)
どう調べていいか見当が付かないので
hogehogeでぐぐれ!といったヒントをいただけないでしょうか?


657 :デフォルトの名無しさん:05/01/12 01:43:15
RegisterHotkey
SendInput/mouse_event

Win32APIの海に沈め、と。

658 :デフォルトの名無しさん:05/01/12 12:45:22
ReflectorみたいなのでSystem.Windows.Formsを使用していないもの紹介希望。
Monoでの動作確認があると最高。

659 :デフォルトの名無しさん:05/01/12 16:07:25
C#というんではないんだが、ThreadPriority.Lowestにしてワーカースレッド作ったのにGUIが固まるというのは何なんでしょう
メモリ足りずにページファイルでスレッド全体固まってるのか?

660 :デフォルトの名無しさん:05/01/12 16:15:47
>>659
ファイルI/O(ページファイルへのアクセスを含む)はスレッドの優先順位関係ないですからね。
あとワーカ側でCOM呼び出しを行っている(ライブラリ経由も含む)なら、ワーカ側にもApplication
作ってあげて定期的に DoEvent するべし。

661 :デフォルトの名無しさん:05/01/12 16:33:11
>>659
2000だが2003やXPだと多少スレッド管理まともになるのかね?ページファイルからむとエクスプローラーもかたまるような。
COMのはなしはSTAがらみのときかね?あまりもうCOM触らないので興味本位ですが。

662 :デフォルトの名無しさん:05/01/12 17:30:40
コントロールのデザイン時の属性つにいてもし知っている方がいたら教えてください。
オブジェクト型プロパティーを準備して
[Browsable(false)]
を使ってデザイン時に表示しないようにしています、
これを適当なフォームに放り込むと初期時(InitializeComponent)で null を入れて初期化しようとします。
null を入れられるとちょっと困った事態になるし、初期状態では設定すべきオブジェクトが完成していないので
この段階でデフォルト値として設定するわけにもいかずで、ちょっとこまっています。
プロパティーに一切触らないようにできないでしょうか?

>>659
ワーカースレッドはマジ死ねます、できる限り使わない設計がよかろかと思う、
プログラムの構造としては直感的でなくてかなり嫌だけれど、DoEventを使った再入式がベスト。
理解可能なバグは大量発生するハメになるけれど、理解不能の謎バグはこれなら少なくとも出てこないです。
上にも書いてありますが、ライブラリーの構造がいとも簡単にデッドロックを引き起こすような構造をしている。
.NetFrameworkのワーカースレッドは鬼門です。


663 :デフォルトの名無しさん:05/01/12 17:52:26
>>662
>.NetFrameworkのワーカースレッドは鬼門です。

それは言いすぎじゃないかなぁ。
サーバ側なんかワーカスレッド(スレッドプール)のカタマリになるわけだけど、別段謎バグとかの問題はないし。
メッセージキューに触りにくいので簡単なスレッド間通知がし難いのは感じるけど。
ユーザ定義メッセージのPostとそれのハンドリングはデフォルトで付けといて欲しかった。
(BeginInvokeはそれなりに面倒だし)

664 :デフォルトの名無しさん:05/01/12 17:54:17
>>663
てゆうか、もう疲れたって感じなんで……
アレを使うと何のための作業をしているのか分らなくなってしまう。

665 :デフォルトの名無しさん:05/01/12 18:00:33
>>664
それは設計が悪かったのでは・・・

というのは置いといて、.Net の各種 BeginHogeHoge の非同期処理メソッドって実は壊れた設計ですよね。
async_result = f.BeginXXX(); とかするわけだけど、非同期コールバックが呼ばれる前にこの代入が完了している、
という保証は無いわけで、内部で安心して EndXXX(async_result) できない。

殆ど全ての場合大丈夫だろうし、サンプルでもこの問題は無いことになってるけど、実際にはlock等で代入の完了を
待ち合わせる必要があるはず。out パラメータにして、値がセットされてからコールバックが呼ばれることを保証して
くれればよかったのに・・・

666 :デフォルトの名無しさん:05/01/12 18:09:11
>>665
アプリが小さい内は設計による動作保障は簡単なんですがね、大きくなったらもうお手上げです、
何処で何を起こされているのか全く分らない。
もっとも厳しいのはデバックしても原因不明となってしまい、
ほとんど丸ごと廃棄処分にせざるを得ないといった事態です
で、実際そうなって、こんなもの使わないほうが初期は多少面倒でも最終的には利があると思ってしまいました。

667 :デフォルトの名無しさん:05/01/12 18:46:41
>>662
ShouldSerializePropertyでfalse返す。こんな感じ。

private bool ShouldSerializeMyProperty() { return false; }

private int myProperty;
[Browsable(false)]
public int MyProperty {
 get { return this.myProperty; }
 set { this.myProperty = value; }
}

静的に値が決められない場合はShouldSerialize使えってMSDNにもかいてあると思う。


668 :デフォルトの名無しさん:05/01/12 19:33:06
>>665
> async_result = f.BeginXXX(); とかするわけだけど、非同期コールバックが呼ばれる前にこの代入が完了している、
> という保証は無いわけで、内部で安心して EndXXX(async_result) できない。

具体的に説明をお願いできます?

669 :デフォルトの名無しさん:05/01/12 21:13:15
>>665 の勘違いだろう。
代入は呼び出し元のスレッドで行われるので、
EndXXX() に移った時点で完了していないわけがない。

670 :デフォルトの名無しさん:05/01/12 21:29:01
>>667
サンクス
しかし読んでみたけれど、この説明からこのメソッドの機能が全く理解できません(ToT)
ああ辛い
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemcomponentmodelpropertydescriptorclassshouldserializevaluetopic.asp


671 :デフォルトの名無しさん:05/01/12 23:35:53
>>669の言ってることもよう分からん。


672 :デフォルトの名無しさん:05/01/12 23:36:48
>>665
あんた非同期コールバック内で呼び出し元で代入した変数使うのか?
なんのための引数なんだ…

673 :デフォルトの名無しさん:05/01/13 01:11:17
>>670
何が解らないのかわからない。

bool ShouldSerialize[プロパティの名前]()

ってメソッド作って、現在の状態で永続化(つまりコード上での代入処理だ)
が必要な場合にはtrueを返す。いらない場合にはfalseを返す。
デザイナはその結果をもって、代入処理が必要かどうかを判断するってだけだろ。


674 :デフォルトの名無しさん:05/01/13 01:36:46
>>663-672
イベントとか使ってGUIスレッドでの動作保障させるとかってできるんですかね。
ワーカースレッドイベント発行->非同期でかまわないからGUIスレッド側でイベント処理デリゲート起動されるような。
まだGUIスレッド関係精査してないので基本事項なのかもしれませんが・・・

675 :デフォルトの名無しさん:05/01/13 02:50:24
MicrosoftのDigitalPhotoImageって画像ビューワー兼エディタありますが、あの写真の高速表示はなに使ってるんでしょう?
DirectDrawとかでしょうか?それにしてもたくさんのファイルの読み込みも速かったのですがその割にはメモリ使ってないように見えました。

676 :デフォルトの名無しさん:05/01/13 04:03:12
>>665
EndInvokeは完了まで待機するから使えないってことかな。終わったかどうかポーリングしたいなら
IAsyncResult.IsCompletedを使えばよい。ワーカースレッドならThreadPoolを使ったほうが楽では
ないだろうか。戻り通知はイベントで処理。
public class FormXXXXX : System.Windows.Forms.Form {
 // いろいろ省略
 private void button1_Click(object sender, System.EventArgs e) {
   button1.Enabled = false;
   ThreadPool.QueueUserWorkItem(new WaitCallback(Worker1), "儲かりまっか");
 }
 public void Worker1(object arg) { // ここではGUIにアクセスは禁止
   string s = (string) arg;
   // なにやら重い処理
   RetEventArgs retArgs = new RetEventArgs();
   retArgs.status = "ぼちぼちでんな";
   // スレッドにマーシャリング(投げっぱなし)
   this.BeginInvoke(new RetEventHandler(Owari), new object [] { this, retArgs });
 }
 private void Owari(object sender, RetEventArgs e)
 {
 TextBox1.Text = e.status;
   button1.Enabled = true;
 }
 private class RetEventArgs : EventArgs { public string status; }
 private delegate void RetEventHandler(object sender, RetEventArgs e);
}

677 :最凶VB厨房:05/01/13 07:32:18
>>665の言いたいことはそういうことだったのか?!?!
>>665の再降臨キボンヌ

678 :デフォルトの名無しさん:05/01/13 09:22:58
>>673
すみません、その説明を見たらますます混乱したのですが、
bool ShouldSerialize[プロパティの名前]()

[プロパティの名前]
の部分はどういう意味ですか?


679 :デフォルトの名無しさん:05/01/13 09:28:25
C#でゲームを作ったんですけどexeファイルでは自分のローカルでしかあつかえませんよね。
誰でも出来るようにJavaScriptみたいにhtml上で動かせるようにすることって出来ないのでしょうか?

680 :デフォルトの名無しさん:05/01/13 09:34:30
HTML 上で exe が動かせるようになったらブラクラ作り放題ですな

681 :デフォルトの名無しさん:05/01/13 09:37:35
>>680
動かせるよ、今でもセキュリティー付きで。

682 :デフォルトの名無しさん:05/01/13 09:41:04
>>679
やりたい事に相当するかどうか分らないけれど、参考までに。
http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/ntdeploy_01.html

683 :デフォルトの名無しさん:05/01/13 09:53:38
>>678
そのまま[プロパティの名前]。
例えば Name プロパティなら ShouldSerializeName だし、
MyProperty1 プロパティなら ShouldSerializeMyProperty1 という具合でしょう。

684 :デフォルトの名無しさん:05/01/13 10:20:13
>>682
ありがとうございます。

例えば「テトリス」でぐぐると、FlashやJavaScriptで作られ、サイト上に埋め込まれたものがたくさんヒットしますが、
このようなことは出来ないのでしょうか?

685 :デフォルトの名無しさん:05/01/13 10:25:10
>>684
現状ではできないのでは無いかと思う(詳しい人よろしく)
実はこれ、ノータッチデプイメントですら、実際やってみるとあまりよろしい物ではなくて……
現状では使えるクラスが殆どないんですよ、これを使うと、DirectXが使えないというのが特に致命的、
まだ取りあえず動かしてみましたって感じです、今すぐならFlash/JavaScriptがよろしいかと。
ロングフォルンにちょっと期待しているのですが、さてさてどうなる事やら。

686 :デフォルトの名無しさん:05/01/13 10:51:16
ASP.NETでもクライアント側の処理はJavaScriptだしな。
ノータッチデプロイメントのDirectXはManagedならそのうちOKになるかな?

687 :デフォルトの名無しさん:05/01/13 10:53:59
>>679
しかしJavaScriptにしたって、結局ローカルにダウンロードして動いてるだけだしな。
サーバーサイドの技術と勘違いしてるのか?

688 :デフォルトの名無しさん:05/01/13 10:59:39
>>687
要するにブラウザのプラグイン的に動作するもの、と言う要件ではないかな。
ノータッチデプロイメントはいかにもexeを実行してますって雰囲気だし。

689 :デフォルトの名無しさん:05/01/13 11:22:49
>>686
多分いけるようになるんじゃないかな、DirectXがGDIの下に入るという事は、
GDIが実行可能になるためにもDirectXは実行可能でないとならないと思うので。
もっともフルスクリーン等の画面のっとり系は、なりすまし実行防止でブロックされると思うけど。

690 :デフォルトの名無しさん:05/01/13 11:55:35
>>684
http://www.sellsbrothers.com/wahoo/

691 :デフォルトの名無しさん:05/01/13 12:10:10
ぷるるん♥

692 :デフォルトの名無しさん:05/01/13 12:23:55
C♯初心者(プログラミング自体もPerlしか・・・)です、質問宜しくお願い致します。

ファイルをコピーする速度を測りたくて、タイマーで100m秒ごとに変数を増加させながら、
ファイルのコピーを行って、ファイルのコピーが終わった時点でタイマーを止めて、
かかった時間を割り出したいと思っています。

ボタンをクリック → timer1.Enable = true;
→ スレッド(tjeread1)を開始
ってところまではできたんですが、肝心のタイマーを止められないのです。

public static void thread1()
{
string copy1 = Application.StartupPath.ToString() + "\\" + "test1.bin";   //コピー元
string copy2 = Application.StartupPath.ToString() + "\\" + "test2.bin";   //コピー先
File.Copy(copy1, copy2, true);                             //コピーする
timer1.Enable = false;                                  //タイマーを止める
}

上のような動きをさせたいのですが、thread1の中からtimer1.Enableをfalseにはできないものなのでしょうか??
諸先輩方、宜しくお願い致します。

693 :デフォルトの名無しさん:05/01/13 12:30:04
System.Windows.Forms.Timerはマルチスレッドでは使わないのが無難。
System.Timers.TimerかSystem.Threading.Timerをつかうべし。

ところでさ、コピー時間を計るだけならわざわざそんなことしなくても
開始直前の時間と終了直後の時間を比較すればいいと思うのだけど。
System.DateTime.Nowを使えば現在の時間が取得できるよ。

694 :デフォルトの名無しさん:05/01/13 12:41:05
確かにノータッチデプロイメントはインターネットゾーンではできることは少ないですね。
イントラゾーンだとわりと使える。アプレットの代替というよりイントラ向きの機能と思います。
個人的にはディスクトップを含むDocuments and Settings以下はイントラゾーン扱いにして
欲しいと思ってるくらいですけどね。

695 :692:05/01/13 13:09:29
>>693
System.Timers.Timer も
System.Threading.Timer も全然知りませんでした(涙
手元に偶然あったのが古本屋で買ってきたVB6.0用の本だったので・・・
早速ぐぐってみますね

>開始直前の時間と終了直後の時間を比較すればいいと思うのだけど。
。・゚・(ノ∀`)・゚・。
「かかった時間」という先入観で全く思いつきませんでした(苦笑
まったく何というか、自分にはプログラミングの才能のカケラもないみたいです。

それにしても素早いレス本当に有り難う御座います。
もう一つ質問なのですが、
Thread1の中ではtimer1.Enabelと同様に、TextBox1.Textとかから情報を受け取ることができないのでしょうか?
例えば>>692のソース内の
string copy1 = Application.StartupPath.ToString() + "\\" + "test1.bin";    という箇所を
string copy1 = TextBox1.Text.ToString();
みたいにして、任意のファイルをコピーしたいのですが、timer1.Enabelと同様、エラーが出てしまいます。

(スレの流れを完全に無視した質問失礼します・・・


696 :デフォルトの名無しさん:05/01/13 13:19:55
>>695
>  Thread1の中ではtimer1.Enabelと同様に、TextBox1.Textとかから情報を受け取ることができないのでしょうか?

とりあえず読むだけなら深く考える事もなく可能だよ。

>  例えば>>692のソース内の
>  string copy1 = Application.StartupPath.ToString() + "\\" + "test1.bin";    という箇所を  
>  string copy1 = TextBox1.Text.ToString();
>  みたいにして、任意のファイルをコピーしたいのですが、timer1.Enabelと同様、エラーが出てしまいます。

この質問にはstaticと言うものを理解する必要がある。
端的に言ってthread1メソッドからstaticキーワードをはずせば可能になるだろうけど。
もっと基礎を勉強すべきだね。

697 :デフォルトの名無しさん:05/01/13 13:23:36
>>692
System.Windows.Forms.Timerで起動されるイベントはメッセージポンプをもつユーザーインターフェイス
スレッドで動作します。Win32のWM_TIMERを使ってると考えればわかりやすいでしょう。
このためFormや他のGUI関係のコントロールと同じく他のスレッドから操作に制限があるものと思われます。
System.Windows.Forms.Timerは呼び出し元と同じスレッドで動作しますから、呼び出し元のGUIコント
ロールに安全にアクセスできます。その代わり呼び出し元が実行中ならばイベントは保留されます。
またイベント実行中は呼び出し元は保留状態になります。このため時間のかかる処理にはこのTimerは
向きませんし間隔も正確ではありません。
>>676 でスレッドにマーシャリングとありますがこれは原理的にはイベントをメッセージループに乗せて
発行していると推測できます。

698 :692:05/01/13 15:46:57
>>696
static・・・
慣れないモノですっかり忘れておりました。
一応、ファイルのコピー速度を測るプログラムは皆様のおかげで作ることができたのですが、
外付けHDDに書き込むスピードは13MB/sと普通なのですが、
読み込みのスピードが180MB/sとかとんでもないスピードで表示されてしまうのです。
バグがないかとソースを見つけること小一時間、
ネット中を探し回ること小一時間、

どこにもありません。・゚・(ノ∀`)・゚・。

もしかして自分のHDDは「試作品の次世代HDDがミスで製品に混入してしまった」とかで
読み込みがUSB2.0で200MB/sくらいでるのでは??っと思い、(USB2.0自体80MB/sなのにw)
試しに外付けHDDから手動でコピー速度を測るソフトで作られたファイルを
デスクトップにドラック&ドロップしてみると・・・
コピーにかかった時間→体感0.2秒 (゚∀。)
まさか本当に!?

・・・(頭を冷やして冷静に・・・
アレです、もしかしてHDDキャッシュが有効になってたりして・・・
キタ━━━━(゚∀゚)━━━━!!
無効化→再挑戦→             「  11.6MB/s   」
なんかヤケに現実的な結果がでてきました、間違いなさそうです。

そこで本題なのですが、VC♯上からディスクのキャッシュを無効化&有効化などは行えるのでしょうか?
毎度毎度申し訳ありませんが宜しくお願い致します。

※それにしても毎秒200MBくらいのスピードがでるHDDは何年後の話だろうw



699 :デフォルトの名無しさん:05/01/13 19:08:00
ウゼー

700 :デフォルトの名無しさん:05/01/13 20:01:24
Environment.TickCount使っとけば良いと思うぞ、精度の要求にもよるが。
真面目に作るならTickCountのオーバーフロー時の対策もいるかな。


701 :デフォルトの名無しさん:05/01/13 20:36:39
>>698
そこまで早さが出るようになる前に、HDD自体がなくなっていると思う、
なんか10年後には2*2cmのチップに「現在のハードディスクの数万倍の容量」が入る
とかいうの聞いたことあるしw
そうなるとあれだな、速度もメモリー並にあがってるか?

702 :デフォルトの名無しさん:05/01/13 22:26:40
何度も実行してキャッシュされてるだけなんじゃないの?

703 :684:05/01/14 12:16:39
とりあえずexeファイルだけのものなら、普通にアップロードすれば直接実行することが出来ました。
しかし、例えばttp://santamartadotnet.hp.infoseek.co.jp/releases/samples/tetris.htmlのように
グラフィックファイルが別に分かれているものだと実行できません。
このように複数のファイルに分かれたゲームを起動する方法、
あるいはグラフィックファイルをexeの中にまとめてしまって1つにする方法はないものでしょうか?

704 :デフォルトの名無しさん:05/01/14 12:23:58
埋め込まれたリソース

705 :デフォルトの名無しさん:05/01/14 12:46:34
>>684
簡易インストーラのようなものつければいいんじゃないの?

706 :デフォルトの名無しさん:05/01/14 12:48:23
ノータッチデプロイメントの話であるという流れぐらいは読もうよ。

707 :デフォルトの名無しさん:05/01/14 12:57:15
>>703
パスをサーバーのものにしてないというオチじゃねえの?

708 :デフォルトの名無しさん:05/01/14 15:27:44
>>707
1行目からしてそれはないだろう。

709 :デフォルトの名無しさん:05/01/14 21:09:08
フォームのデータバインドの効率的な行い方についてです。

フォームに、テキストボックスやチェックボックスが 40 程あり、今データバインドで別のクラスのプロパティに
バインドしています。これ自体は問題なく使用できてます。
で、お聞きしたいのは、バインドするときにフォームとプロパティを一つ一つ処理していくのは、コードが長く
なってしまい、かっこもわるいです。
そこでみなさんはどうしていますか?何か効率的なやり方はありますか?

710 :デフォルトの名無しさん:05/01/15 00:52:02
ノータッチデプロイメントの話題が出てるので便乗質問なのです。
インターネットゾーンから起動したとき .NET Security Information
のバルーンが出るのですがイントラゾーンからはでない。コードに制限を
受けてるのはどちらも同じだと思うのですが、どのへんで差が出てるのでしょう?
また、このバルーンを出さなくする方法はありますか?

711 :デフォルトの名無しさん:05/01/15 02:00:04
>>710
コードアクセスセキュリティ
管理ツールの.NETなんちゃらでセキュリティポリシーを変更する。
1つのアプリだけでよければウィザードのアセンブリの信頼で許可を緩くしてあげる。

712 :デフォルトの名無しさん:05/01/15 02:16:18
>>710
LocalIntranetだとUIのWindowまわりに関しては制限はないようなので、
ポップアップが出ないんだろう。
UIPermissionWindow.AllWindowsとかになってるはず。

実際ポップアップの条件は調べてみないとわからないけど。

713 :710:05/01/15 09:25:37
>>711, >>712
おっしゃるとおりUIPermissionをいじるとバルーンが出なくなりました。
ただ不特定多数に管理ツールを操作させるわけにも行かないのでバルーンの
件はほっとく事にします。
調べてる途中で妙なことに気づいたのですが、xxxx.exe.configファイルが
ないとバルーンが英語表記になるようです。
中身はこれだけなんですけどね・・
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

714 :デフォルトの名無しさん:05/01/15 13:20:52
何もしないウィザードで作っただけの16,384kしかないReleaseビルドしたアプリが実行時に58メガも食ってるのは既出ですか?

715 :デフォルトの名無しさん:05/01/15 13:31:42
一度最小化すれば極端に減るのも既出だな。

716 :デフォルトの名無しさん:05/01/15 15:13:38
おおちいさくなった。>>715さんくす。
よくわからん挙動だ。
JITするのに何で最初からメモリ食ってるのか。

717 :デフォルトの名無しさん:05/01/15 16:07:30
ちょっとプログラム自体から少し外れる話だけどいいでしょうか。
今、Bitmapクラスなどのリファレンスを探しているんですが、
おすすめなものが何かありますでしょうか。

718 :最凶VB厨房:05/01/15 16:16:05
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDrawing.asp?frame=true
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpguide/html/cpcondrawingeditingimages.asp?frame=true

719 :710:05/01/15 17:49:46
ノータッチデプロイメントのexeをチルド付のurlに配置するとIE6.0(NT2000, XP SP2)
から起動しません。エラーも出ずに無反応です。これは一般的な現象なのでしょうか。
 ttp://hogehoge/~xxxx/ntd.exe
ちなみに ttp://hogehoge/%7exxxx/ntd.exeだとieexecがエラーを出します。
Firefoxからだと素直にダウンロードできます。
何かご存知のかたいらっしゃいましたら情報ください。.NETは1.1です。

720 :デフォルトの名無しさん:05/01/15 19:21:25
>>718
やっぱりMSDNしかないんですか。
情報どうも。

721 :デフォルトの名無しさん:05/01/15 19:46:32
>>719
~はgoogleの検索ワードに使えないんで調べにくい事甚だしいが、
ttp://www.janis.or.jp/users/segabito/dotNetManual.html
によると仕様のようだな。
//.NET2.0ベータでも変わらずだな……。

722 :710:05/01/15 20:33:17
>>721
情報ありがとう。仕様という名の放置バグみたいですね、悲しい。
面白いことに ieexec ttp://hogehoge/~xxxx/ntd.exe とコマンドラインから
いれると起動しました。IE側の問題みたいです。

723 :デフォルトの名無しさん:05/01/15 20:44:10
ティルダはURIに使える文字だったっけ?

724 :デフォルトの名無しさん:05/01/15 21:04:08
()辺りならまだしも~が使えなくなったら大混乱だと思うよ?

725 :デフォルトの名無しさん:05/01/15 21:04:36
ウィンドウの透明化とアルファぶれんでぃんぐには関係があるのでしょうか?
FormのOpacity で透明化を行い、描画の重ねあわせにアルファブレンドがかかわってると思うのですが、ウィンドウの透明化にアルファブレンドはかかわることはないのでしょうか?
やりたいことはグラデーションのかかった形でのウィンドウの一部透明化です。

726 :デフォルトの名無しさん:05/01/15 22:33:22
>>723-724
should not のようです
ttp://www.cs.tut.fi/~jkorpela/tilde.html

727 :デフォルトの名無しさん:05/01/15 22:57:02
>>725
初めの部分のいいたことがよく分からんが、UpdateLayeredWindow()で出来るかもしれない。

728 :デフォルトの名無しさん:05/01/15 23:05:08
>>726
改訂版とはいえ元記事が1997年のだからなぁ。
ざっと読んだけど説得力を感じなかった。
RFC2396ではっきりとURIで扱える記号として定義されてるわけだし、~も十分市民権を得たと思うし。

//しかもノータッチデプロイメントならIE5以上だか要求されるわけで古いRFCのしがらみとも関係ないしねー。

729 :デフォルトの名無しさん:05/01/15 23:20:30
>>727
レスサンクスです。
UpdateLayerdWindow見てみます。
んーと、アルファぶれんでぃんぐで透明値の指定あるけれどそれがウィンドウの透明化に関係できないかということだったんです。
それできれば要らない背景アルファ値透明にしてほかの部分は普通に描画できないかと。

730 :デフォルトの名無しさん:05/01/16 00:05:09
言ってること同じじゃん。

731 :デフォルトの名無しさん:05/01/16 00:25:03
>>730
同じじゃねー世馬鹿。それが同じだと思うならおまいの日本語能力はざるだな

732 :725:05/01/16 04:41:14
解決しますた
http://216.239.57.104/search?q=cache:SR8xM1V3VBgJ:www.codeproject.com/cs/media/perpxalpha_sharp.asp?df=100&forumid=3270&exp=0&select=190580%20C# UpdateLayeredWindow

733 :デフォルトの名無しさん:05/01/16 10:23:17
画像を実行ファイルに埋め込みたいのですが、とりあえず試しに
ttp://santamartadotnet.hp.infoseek.co.jp/releases/samples/tetris.html

ここにあるやつで、
ファイル→既存項目の追加→Brock.bmp
リソースファイルのプロパティの 「ビルドアクション」を「埋め込まれたリソース」にしてビルドしてみたのですが、
「Brock.bmpが見つかりません」というダイアログが出てきました。どこが悪いのでしょうか?

734 :デフォルトの名無しさん:05/01/16 12:50:15
Brock

735 :733:05/01/16 13:04:01
誤brock
正block

736 :デフォルトの名無しさん:05/01/16 14:10:25
なあなあ、なんで「#」なん?
C「+++」じゃあかんの?

737 :デフォルトの名無しさん:05/01/16 14:13:37
>>733
ttp://dobon.net/vb/dotnet/programing/bitmapresource.html

738 :デフォルトの名無しさん:05/01/16 14:20:14
>>736
+が4つ分です。

739 :デフォルトの名無しさん:05/01/16 16:39:38
>>737
そこを参考に、

//現在のコードを実行しているAssemblyを取得
System.Reflection.Assembly myAssembly =
System.Reflection.Assembly.GetExecutingAssembly();
//指定されたマニフェストリソースを読み込む
Bitmap myBitmap =
new Bitmap(myAssembly.GetManifestResourceStream("Tetris.Block.bmp"));
//PictureBox1に表示

を「// ブロック用ビットマップ」のあとに挿入してみたのですが、結果は同じでした。
どこに入れればよいのでしょうか?

740 :デフォルトの名無しさん:05/01/16 17:20:57
using ステートメントを使っていて思った事なのだけれど、なんで複数個指定できないんだろう?
いっそこんな感じの文法だったらネストも深くならなくて便利なんだけれど・・・
void func()
{
using MyClass a = new MyClass ;
using MyClass b = new MyClass ;

スコープから抜けるときに Dispose
}
何か理由があるんですかね?
宣言と同時にDisposeを保障するので、自前Dispose指示と違って忘れ物が無くてよいのですが・・・
ついでにこんなのがあるともっと便利。
void func()
{
using MyClass a = new MyClass finally { a.MyDispose() ; }
using MyClass b = new MyClass finally { dokokanoObject.kowasitaYO() ; }

スコープから抜けるときに finally 以下実行
}

とまあ、それはさておき現状でまとめて複数個のオブジェクトを Dispose する便利な方法があったら誰か教えてください。


741 :740:05/01/16 17:23:06
いかん、C++やってたら勢いでコンストラクタにカッコを忘れている


742 :デフォルトの名無しさん:05/01/16 17:47:56
using (Graphics g = Graphics.FromImage(m_bmp))
using(Brush bra=new SolidBrush(Color.Red))
{


こんな感じで

743 :740:05/01/16 18:05:28
>>742
どうもです、
 using(宣言) 文
だったんだ、初めて気付いた。
 using( ... ) a = b ;
といった書き方もできるとは。
十分用は足しますがインデントをしない if 文の連続みたいでちょっと気持ち悪いですね。


744 :デフォルトの名無しさん:05/01/16 19:03:20
using (Graphics g = Graphics.FromImage(m_bmp),
     Brush bra=new SolidBrush(Color.Red))
{



こう書けなかったっけ?

745 :デフォルトの名無しさん:05/01/16 19:23:46
>>744
それができるのは2つの変数の型が同じときだけ。
using(A a = new A(), b = new A())
はできるけど、
using(A a = new A(), B b = new B())
は無理。

746 :739:05/01/16 20:00:41
自分の力で考えて解決しますた。あなた達は用済みです。

747 :デフォルトの名無しさん:05/01/16 20:09:25
( ´,_ゝ`)プッ

748 :デフォルトの名無しさん:05/01/17 00:35:19
仕方ないので
using (Graphics g = Graphics.FromImage(m_bmp))
using (Brush bra=new SolidBrush(Color.Red))
{

こう書く。


749 :デフォルトの名無しさん:05/01/17 01:37:15
Linkリスト等のTree形式のコレクションクラスってC#にあるのですか?
C#全然まだ解ってないのですが、n分木などを試しに実装してC#の感覚を
つかんでみたいのですが。C++のようにSTLがあればそれを利用します。

750 :デフォルトの名無しさん:05/01/17 01:46:02
LinkedListは.NET2.0でジェネリック型として追加される。

751 :デフォルトの名無しさん:05/01/17 01:55:14
実装調べてないけど ArrayList って中は list じゃないのかなー。

752 :デフォルトの名無しさん:05/01/17 02:07:20
>751の意味は微妙に分からないが、ArrayListは配列で実装されてる。

753 :デフォルトの名無しさん:05/01/17 04:18:15
ArrayListとかListとか実態と名前があってない気がするのは自分だけですか?

754 :デフォルトの名無しさん:05/01/17 07:07:19
C#プログラミングで一般保護例外が発生する状況ってどういう場合がある?

755 :デフォルトの名無しさん:05/01/17 07:51:50
>>754
1. unsafeコード内でメモリ破壊した
2. 行儀の悪いライブラリを呼んだ
3. .NET Frameworkのバグ

756 :デフォルトの名無しさん:05/01/17 15:08:43
DrawStringで書いた文字の終わりの座標はどうやったらわかるでしょうか?

757 :デフォルトの名無しさん:05/01/17 21:25:02
SMTPメールサーバを取得するのに「nslookup -type=mx」
というのを見つけて、とりあえずと実装してみたのですが、
一瞬ウィンドウが開いただけで終わってしまいます。
SMTPサーバを取得する何か良い方法はないでしょうか?

toTextBoxに送り先のメアドが入っているもとします。

private string MailExchanger()
{
 int start = toTextBox.Text.LastIndexOf("@") +1;
 int end = toTextBox.Text.Length;
 string s = toTextBox.Text.Substring(start, end-start);
 return s;
}
private void button1_Click(object sender, System.EventArgs e)
{
 System.Diagnostics.Process.Start("nslookup", @"-type=MX " + MailExchanger());
}

758 :デフォルトの名無しさん:05/01/17 21:38:05
RadioButtonをGroupBox等に格納して使うとき、
どのRadioButtonがチェックされたRadioButtonがどのRadioButtonか判断するようなメソッドはどこかに実装されてないでしょうか?
パッと見、取りあえず見つからなかったので自前のコンテナを作って機能させたのですが……

759 :デフォルトの名無しさん:05/01/17 22:09:00
>>757
スパム送信機作者乙。
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "nslookup.exe";
p.StartInfo.Arguments = "-type=MX hoge.com";
p.Start();
p.WaitForExit();
string output = p.StandardOutput.ReadToEnd();
あと適当に処理して mail exchanger を得れ。

760 :デフォルトの名無しさん:05/01/17 23:48:12
>>757さん
レスありがとうございます。
お陰様で、まだ途中だけど何とか実装出来そうです。
ちなみにスパム送信機ではありません。(笑)

761 :デフォルトの名無しさん:05/01/18 00:27:16
んむ?スパーム送信機がなんだって?


762 :デフォルトの名無しさん:05/01/18 02:32:49
XmlTextReaderでタグ内の空白も有効にするオプションはないでしょうか?
どんなに<a xmlns="a">なんてやっても<a xmlns="a">にしかならないっす
助けてほしいっす。

763 :デフォルトの名無しさん:05/01/18 03:25:18
ん? 俺のスパームがそんなに欲しいか。そうか。


764 :デフォルトの名無しさん:05/01/18 07:35:22
プラグイン形式のアプリ作りたいんですが
動的DLLロードみたいなことってできますか?

765 :デフォルトの名無しさん:05/01/18 08:34:08
Assembly.LoadFrom


766 :デフォルトの名無しさん:05/01/18 12:21:10
DllImportのことでちょっと聞きたい。

[DllImport("Imm32.dll")]
なんて書いたときに、"Imm32.dll"が見つからない場合もあり得ると思うんだが、
プログラムとしてはそういうときはどういう感じで書けばいい?

それとも、"Imm32.dll"が見つからないってことはまずない?

エロい人おしえて!



767 :デフォルトの名無しさん:05/01/18 14:22:00
>>766
DLL名を適当な名前に変えて試してみれ

768 :デフォルトの名無しさん:05/01/18 14:43:52
>>758
一発解決なのはないので、Controlsをforeachで回して取得、かな。as演算子小活躍。

>>762
xml的に<a xmlns="a">と<a     xmlns="a">は等価なのでそんなオプション実装するわけ無い。

>>764
765が手軽な手法。
>>485-486にAppDomainを使った手法が出てる。
どう呼ぶにしろ、485みたいなのがプラグインの基本。

>>766
Imm32.dllが見つからないとIME全滅すると思うんだけど。
そんなのはサポート対象外にすればいいんでない?

769 :デフォルトの名無しさん:05/01/18 15:10:02
>>768
Control は Tag っていうプロパティ持ってるから、それにあらかじめ何らかの識別情報を入れておく。

// CheckBox 作成側
for(int i=0; i<N; ++i){
RadioButton rb = new RadioButton();
// 中略
rb.Tag = i;
this.group.Add(rb);
}

// イベントハンドラ内
void OnClick(object sender, EventArgs e){
RadioButton rb = e as rb;
switch((int)rb.Tag) // 後略
}

770 :デフォルトの名無しさん:05/01/18 18:08:59
Controlの派生とEventHandlerに関する質問です。

class SubControl:Control{
  protected override void OnMouseUp(MouseEventArgs e){
    ………(1)………
  }
}

class MainForm:Form{
  MainForm(){
    SubControl subcontrol=new SubControl();
    subcontrol.MouseUp+=new MouseEventHandler(OnSubControlMouseUp);
  }
  void OnSubControlMouseUp(object o, MouseEventArgs e){
    ………(2)………
  }
}
上記のようにSubControlのMouseUpに対して(1)(2)を共に実行させたいのですが、
(1)のみが実行されます。
解決方法を教えて下さい。


771 :デフォルトの名無しさん:05/01/18 18:16:54
>>770
base.OnMouseUp() を呼ぶか(この場合 OnMouseDown も同様にすることが必須)、
自分で if (this.MouseUp != null) (this.MouseUp)(hoge) とかしてハンドラを呼び出す。

Visual Studio .Net だと、override タイプした辺りからインテリセンス任せに選んでいけば
そこらへんの説明まで付いたコードが挿入されます。

772 :770:05/01/18 18:35:15
自己解決しました。

class SubControl:Control{
  protected override void OnMouseUp(MouseEventArgs e){
    ………(1)………
  }
}

上記のようなオーバーライドをやめて下記のように変更しました。

class SubControl:Control{
  SubControl(){
    this.MouseUp+=new MouseEventHandler(OnSubMouseUp);
  }
  void OnSubMouseUp(object o, MouseEventArgs e){
    ………(1)………
  }
}

コーディングに今ひとつ美しさを欠くのですが、
問題ないので、これで行きます。

>>771
即レスに感謝しております。

773 :デフォルトの名無しさん:05/01/18 19:09:14
あるファイルの中で、1回しか使わないメソッドがあったとして。
そのメソッド(の属するクラス)の属する名前空間はガンガンusingしますか?
それとも、その1回だけ使う場所で、名前空間を明示しますか?
流儀的にどちらがいいのか分かりません。1回でなく2回3回になった場合もまた困ります。


774 :デフォルトの名無しさん:05/01/18 19:15:21
それこそ個人なりグループなりの流儀・コーディング規約の問題だと思うけど。
私は積極的にusingする派。

775 :デフォルトの名無しさん:05/01/18 20:20:50
オブジェクトに対するアクセスをフックしたいのですが、どないしたら(・∀・)イイ!!でしょう?
public class Ptr<T>{
T m_t;
public Ptr(){ }
public Ptr(T t){ m_t = t; }
public T r() { return m_t; }
static public implicit operator T(Ptr<T> from){ return from.m_t; }
}
こんな感じにしたのですが、当然
Ptr<string> pts=new Ptr<string>(s);
int ind=pts.r().IndexOf('e'); か
int ind=((string)pts).IndexOf('e'); にしないとアクセスできません。

int ind=pts.IndexOf('e'); としたいのですが。知恵を貸してください・・・

776 :デフォルトの名無しさん:05/01/18 20:35:16
Valueプロパティでインスタンスを返すのがNullable<T>もお薦する手法だ。

777 :775:05/01/18 21:01:08
>>776
了解です。
けんど、透過的につかう方法なかとでしょうか。C++のときはoperator->があったので通常のポインターと同じように使えたので。

778 :766:05/01/18 21:06:18
>>767
>>768
まぁ、サポート対象外にすれば楽なんだがな。

DllImportするときに、該当のdllが見つからなかったときの対処って
どうすればいいのかなって思ったのだよ。

779 :デフォルトの名無しさん:05/01/18 21:12:46
C++で作成したEXEからC#のCOMコンポーネント化したオブジェクトを呼び出すようなプログラムをつくらなければならないんですが、C#でCOMを作成する方法が全くわかりません。
C#でCOMを作ることはできるのでしょうか?

780 :デフォルトの名無しさん:05/01/18 21:21:56
>>778
WinAPI(システム)のDLLならどうしようもないな。
対応するOSに換えていただくか、OSが対応してるはずなら再インストールしてもらうしかない。

ん〜、実際そこらのアプリを見てもDLLが足りなかったら警告メッセージだけ出して終了させてるし。

>>779
できるよ。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconExposingNETFrameworkComponentsToCOM.asp
基本的には、普通に書いたのをregasm.exeでCOMに登録して、アセンブリをGACか呼び出す側の実行ファイルと同じ位置に置くだけ。

781 :デフォルトの名無しさん:05/01/18 21:29:13
>>780
ありがとうございます。
MSDNのそこらへんのページも見たんですが、イマイチ理解できなくて・・・。
もっとじっくり読んであとは自力でなんとかしようと思います。

782 :デフォルトの名無しさん:05/01/18 21:43:08
ん、分からない事があったらまたドゾー。

783 :766:05/01/18 22:17:28
>>780

それって、アプリが自分で起動時にDLLの存在をチェックしてるわけだよね。

DLLの検索順序調べたら↓のサイトがあった。

http://support.microsoft.com/default.aspx?scid=kb;ja;815065
1. 現在のプロセスに対応する実行可能プログラムが格納されているディレクトリ
2. 現在のディレクトリ
3. Windows システム ディレクトリ (Windows システム ディレクトリのパスは GetSystemDirectory 関数を使用して取得できます)
4. Windows ディレクトリ (Windows ディレクトリのパスは GetWindowsDirectory 関数で取得できます)
5. PATH 環境変数に設定されているディレクトリ

System.IO.File.Exists()で、↑のディレクトリを一つ一つ調べるしかないのかな。

784 :デフォルトの名無しさん:05/01/18 22:36:18
>>783
JITコンパイラで使ってるときは、当該メソッドを呼び出したところで例外が発生するみたいです。
のでcatchすればいいかと。
ngex.exe とかでコンパイルしようとするとどうなるのかは良くわかない。

785 :デフォルトの名無しさん:05/01/18 23:02:57
メッセージループがあるならApplication.ThreadExceptionで拾えるから、統一的に扱うなら。
例外が投げられるのは当然そのメソッドを初回呼び出した時。

メッセージループが無くてもAppDomain.CurrentDomain.UnhandledExceptionで拾えるんだけど……。
これって結局フレームワークが発生した例外を再スローするようだからちょっと違うかな。

786 :766:05/01/18 23:15:06
なるほど。
皆さんどうもありがとん。

787 :デフォルトの名無しさん:05/01/18 23:32:18
>>783
LoadLibrary()呼び出してDllが読み込まれるか確かめるだけでよくないか?
Dllの検索順序もOSとかサービスパックによって変わるし。

788 :デフォルトの名無しさん:05/01/19 01:22:20
Visual C# 2005に関して質問させていただきます。

現在、DataGridViewを備えたソフトウェアを個人的に作成しています。
しかしながら、以下のような問題に突き当たり、皆様の助言を請いたく、
どうぞ宜しく。

[問題点]
private void myDataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
     myDataGridView.Rows[e.RowIndex].Cells[0].Value = str[0];
     myDataGridView.Rows[e.RowIndex].Cells[1].Value = str[1];
}
上記のように、二度押しされた行のセル内容をstrに変更したいのですが、
変更後のセル内の表示が正常にいきません。

具体的に症状を紹介します。
・セル内容は変更される。
・上記プログラム処理を行った後、変更のあったセルをSelectedにしたり
ほかのセルをSelectedにすると、「表示」が変更される。
・「表示」が変更されない、とは、2パターンある。
・一方は、見た目で全く内容の変化がない状態。
・他方は、変更前の文字と変更後の文字が重なって2重に見える。
・ただし、これらの2パターンの状態も、数度のSelected,Unselectedを
 繰り返せば、正しく表示されるようになるようだ。

・Columnには、AutoSortされるようにあらかじめ設定されている。

以上です。
セル内容変更後、直ちに「表示の変更」が正常に行われる修正案を
教えていただけないでしょうか。

心より、エロい方、宜しくお長いします。

789 :デフォルトの名無しさん:05/01/19 01:28:23
個人的にIRCのbotをC#で製作しています。
IRCの接続にはsf.netのthresher-1.2というライブラリを使っています。
IRCのメッセージを送るメソッドの引数はstringとなっていますが、
日本のWide系の鯖では文字コードにShift_JISを使っているようで、
stringだと普通うにこーどが使われるので文字化けしてしまいます。
この問題を解決するには、文字をエンコードすればよいと思いますが、
オーバーロードとかされてなくて引数はstringのみなので どうしたらよいかわかりません
ライブラリをなんとか書き換えるしかないのですか?

790 :デフォルトの名無しさん:05/01/19 01:54:35
クリップボードにファイルのコピーってC#で出来ますか?

エクスプローラー上でのコピーと同じ処理を行いたいんですが、
ぐぐって見ても、テキストやらイメージデータしか見つかりませんでした。

知ってる人がいたら教えてタモーレ

791 :790:05/01/19 02:08:42
出来ました。
某BBSよりこぴぺ

sting[] filenames = new string[1];
filenames[0] = "c:\test.txt";
Clipboard.SetDataObject(new DataObject(DataFormats.FileDrop, filename), true);


792 :デフォルトの名無しさん:05/01/19 02:36:00
>>788
クイズか何かですか?
答える側が推測しないとならない部分が多い気がしますが。
とりあえずフォームにDataGridを貼り付けて2列追加した後、
DataGridのCellMouseDoubleClickイベントハンドラにて

private void myDataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
  string[] str = {"v1", "v2"};
  myDataGridView.Rows[e.RowIndex].Cells[0].Value = str[0];
  myDataGridView.Rows[e.RowIndex].Cells[1].Value = str[1];
}

などとして1行1列をダブルクリックしてみると、
確かに1行1列は"v1"が表示されて欲しいのにCell真っ白。
1行2列は"v2"と入っているのですが。
更に1行目にデータを入れたのに、新規入力用の行が2列目に無いことも
気になるところ。
なので

if (e.RowIndex == dataGridView1.Rows.Count - 1)
  dataGridView1.Rows.Add();

などと書き足してやるとなんとなくいい雰囲気。
文字が二重に見えるという現象は再現出来なかったのですけども、
果たしてどういった状況下でしょう?

793 :デフォルトの名無しさん:05/01/19 04:48:24
>>789
Encoding絡みのパラメータがあるっしょ。それいじってみたら?

794 :デフォルトの名無しさん:05/01/19 08:29:26
>>789
Shift_JISじゃなくてISO-2022-JP(いわゆるJIS)では

795 :766:05/01/19 12:08:11
>>787
まさしくそんな感じのを探していました。
どもありがとう。

796 :デフォルトの名無しさん:05/01/19 16:40:59
object objDate = @"2004/01/01";
DateTime date1 = Convert.ToDateTime(objDate);
DateTime date2 = (DateTime)objDate;

date2で、キャスト不正エラーが出ますが
どうしてでしょうか


797 :デフォルトの名無しさん:05/01/19 16:49:16
stringからDateTimeにキャストできないから。
・DateTimeはstringから継承されてるわけではない
・stringにもDateTimeにも明示的/暗黙的な相互の型変換が定義されていない

798 :796:05/01/19 16:56:18
ご丁寧にありがとうございます。
objDateはobject型ですが、"2004/01/01"を格納した地点で
string型に変換されてしまうってことでしょうか。
初心者ですいません。

799 :デフォルトの名無しさん:05/01/19 17:03:02
んーとね、
objDateはobject型として宣言されてるね。
つまり何でも入る器だ。

そこに"2004/01/01"という、string型のモノを入れた。

さてこれを器から取り出したとき、
それは「何でも入る器に入ってた」からって、どんなモノにでもなるってわけはないだろう?
何でも入る器に入ってるだけでstring型はstring型なんだから。

800 :796:05/01/19 17:22:15
そうだったのか・・。
とても分かりやすい説明、有り難うございました。

801 :デフォルトの名無しさん:05/01/19 18:22:49
<a><b>ccc</b></a><a><b>ddd</b></a><a><b>eee</b></a>

こんなテキストがあったとして、ccc、ddd、eee を取り出す正規表現
を教えてください。まずは、<b>ccc</b>、<b>ddd</b>、<b>eee</b>
でも OK です。

<a>ccc</a><a>ddd</a><a>eee</a>

なら、"<a>(?<value>[^<])</a>" でいけるんですが、^ の後に複数文字
が指定できず、"<a>(?<value>[^<a])</a>"だとダメダメでした。



802 :デフォルトの名無しさん:05/01/19 18:30:45
"<b>(?<value>.*?)</b>" で何か問題が?

803 :デフォルトの名無しさん:05/01/19 18:34:30
http://www.kumei.ne.jp/c_lang/sdk/sdk_09.htm

のとおりにプログラムを作るったときのソースを教えてください。


804 :デフォルトの名無しさん:05/01/19 18:44:43
取りあえずCはスレ違いだな。
文章の意味もよくわからんが。

805 :デフォルトの名無しさん:05/01/19 18:52:15
>>802
す、すげー! ばっちりです。ありがとうございました。

806 :デフォルトの名無しさん:05/01/19 18:57:21
頭の固いお方ですこと

807 :デフォルトの名無しさん:05/01/19 19:00:31
>>803
System.Threading.Timer でも System.Windows.Forms.Timer でも
好きな物を使えばよろしいのでは。

808 :デフォルトの名無しさん:05/01/19 19:02:47
すみません、スレ違いでした。
これから気をつけます


809 :デフォルトの名無しさん:05/01/19 21:08:48
C#でWordみたいなワープロソフトを作っているサイト、又は本などを
誰か知りませんか?ご存知の方がいましたら教えてください。

810 :デフォルトの名無しさん:05/01/19 21:35:40
>>809
俺が、前作ってたよ
ワードは、C#で操れるよ。
#region Variable
private Word.Application _wApp;
private Word._Document _wDoc;
private Word.Selection _wSel;
private object oMissing;
private Object oTrue = true;
private Object oFalse = false;
// Open the Dropped document.
try
{
object __temp_filename = (string)fileinfo.FullName.Clone();
_wDoc = _wApp.Documents.Open(ref __temp_filename, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing);
_wSel = _wApp.Selection;
}
catch
{
MessageBox.Show("DragDrop_CantOpenWordFile_Error");
WordRelease();
fileinfo = null;
return;
}
とっかかりに、ほれ。

811 :デフォルトの名無しさん:05/01/19 21:36:23
あ、操作するんじゃなくて、作るのね・・・丸rz...

812 :デフォルトの名無しさん:05/01/19 22:06:48
ボタンをマウスでクリックした時のイベントつかまえて処理をしています。
この時マウスを連打するとクリック回数分連続でイベントが走ってしまいます。
最初の一回のイベントのみ実施してその後のイベントをキャンセルしたいのですが、
いい方法ありませんか?
マウスポインタを砂時計にしてもだめでした。
それなりに重たい処理を行うので連打を許したくないのです。


813 :デフォルトの名無しさん:05/01/19 22:08:31
>>812
処理中ははbutton.Enable=falseとすればいいじゃない。

814 :デフォルトの名無しさん:05/01/19 22:14:46
サーバー上にexeをおいて
ノータッチデプロイメントが使用されない方法ってありますか?
そのままダウンロードもしくは警告は出るが実行できるなにか。

815 :788:05/01/19 22:15:18
http://imgb.rentalcgi.com/view/theh/1106140430.gif

写真うpしました。
お願いします。偉い方。

816 :デフォルトの名無しさん:05/01/19 22:16:21
ちょっとしたアプリを作っています。
Form1がメインフォームで、textBox1があります。
Class1に処理があって、Form1のbutton1をクリックするとnew Class1().Start();と呼び出されます。
このとき、Class1からメッセージstringをForm1(呼び出し元)のtextBoxに表示したいのですが、
Class1から呼び出し元にstringを渡すにはどうすれば良いのでしょうか?
デリゲートとかいうのを使うんですか?

817 :788:05/01/19 22:20:19
class Class1{
____public Start(){
________messgebox.show("Class1のメソド");
________Form1.input("任意の文字");
____}
}

class Form1{
____public input(string str){
________this.textBox1.Text = str;
____}
}

818 :デフォルトの名無しさん:05/01/19 22:22:00
>>816
設計上支障がなければ Class1 に textBox1 への参照を持たせてやればいいのでは。

819 :788:05/01/19 22:22:02
pubic void Start()

public void input(

丸rz..

820 :デフォルトの名無しさん:05/01/19 22:22:20
>>815
グラフィックカードが原因でそういうような画面になったことはある

821 :788:05/01/19 22:24:13
>>820
最初は、フォームをロードしたときにコラムをアセンディングでソートしてるのが
プロブレムかと考えていたんですけど・・・ソーでもないみたい。

822 :788:05/01/19 22:27:06
原因の一つとして、フォームをロード時に列をSort(Column[0],List....Ascending);
とかしてるのがあげられると推測していたのですが、ロード時の前記処理を
//しても変化なしでした。
くどい文章かいてごめん。

823 :デフォルトの名無しさん:05/01/19 22:28:55
DataGridViewのInvalidateでも呼んでやれば?

824 :788:05/01/19 22:37:35
>>823
RefreshとかInvalidateやたーよ 〇rz...
やったのにまったく改善されはらへんて。

825 :デフォルトの名無しさん:05/01/19 22:45:52
>>824
ダブルクリック以外のイベントでは正しく変更される?

826 :788:05/01/19 22:52:46
今、プログラム変更注。

827 :788:05/01/19 22:53:23
2005重すぎるよ。
それともPen600じゃだめって?(>_<)

828 :788:05/01/19 22:54:45
前から思ってるんですけど、
起動直後に
'System.NullReferenceException' の初回例外が Saisoku2.exe で発生しました。
っていわれるんですよ。
これ、なんなんですか?起動には支障ないみたいですが・・・

829 :788:05/01/19 22:57:56
前から思ってたんですけど、
どうしてMicrosoft VisualC# 2005 Express Edition Beta
のアプリケーションでいくらフォームを変更しても
(しかも前回のフォームは跡形もないくらい)
いざ、デバッグすると、すでに消えているはずの
前のフォームが出てくるわけ!!
あぁ〜いらいらする。
いったい、どこに眠ってるんだ、この消したはずの
テスト用DataGridView!! あうあうあー

830 :788:05/01/19 22:59:43
もう怒ったからこのスレ荒らしてやるー

831 :デフォルトの名無しさん:05/01/19 23:00:18
>>828
そういう例外が発生しているってこと。catchされているので落ちない。
どこで発生しているか見たいときには、VS .net のメニューの「デバッグ⇒例外処理」だかなんだかで
当該の例外を「常に停止」にしてデバッグ実行すると、例外の発生時点で停止してくれる。

832 :788:05/01/19 23:05:37
>>831
まじサンクスです。さっそくやってみます。
>>830
おれじゃない。

833 :788:05/01/19 23:09:44
831さん
オプション→デバッグ→全般ですか?

834 :デフォルトの名無しさん:05/01/20 00:00:53
ファイルに関連したアイコンが取得したいんですが、
ExtractAssociatedIconとSHGetFileInfoを使用しても、なぜか小さいアイコンしか
取得出来ません。
大きいアイコンの取得に関して何か特別な呼び出し方でもあるんでしょうか?

IntPtr hImageLarge = SHGetFileInfo(filename,0,ref shfi,
   (uint)Marshal.SizeOf(shfi),
   ICON_SHGFI_ICON | ICON_SHGFI_LARGEICON )

  iList.Images.Add(Icon.FromHandle(shfi.hIcon));//イメージ追加


835 :デフォルトの名無しさん:05/01/20 00:14:18
DataGridViewで、
DefaultCellStyleのSelectedBackColorを空欄、すなわち指定なし
すなわち選択時もバックカラーは選択前のバックカラーから変化しないように
できないでしょうか。

836 :788:05/01/20 00:23:00
原因がわかりました。
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }
_dgv.Rows[e.RowIndex].Cells[0].Value = (int)(new Random().NextDouble() * 100);
_dgv.Rows[e.RowIndex].Cells[1].Value = "ここ変えた";
this._dgv.Sort(_dgv.Columns[0], ListSortDirection.Ascending);
for (int i = 0; i < _dgv.Rows.Count; i++)
{
this._dgv.Rows[i].Selected = true;
}
}
これをブレークポイントを利用して順に動作させると
あることに気づきます。それは、このダブルクリックメソッド内では
なんら_dvgを変更しない、ということです。
つまり、この中でいかにRows[i].Selected=trueとかしても
まったく意味ないのです。ループまわしたところで、
何も変化ありません!!

なぜですか!!むきょー

837 :834:05/01/20 00:32:43
事故解決

ICON.fileBig.ImageSize = new Size(32,32)


Orz.....

838 :デフォルトの名無しさん:05/01/20 00:37:19
317==363==788

839 :788:05/01/20 00:39:19
>>838
True

840 :デフォルトの名無しさん:05/01/20 00:50:53
>>836
ん?
_dgv.Rows[e.RowIndex].Cells[0].Value とかが変更されているでしょうに。
DataGridViewそのものをダイレクトに変更する必要ってあるのかな。

841 :788:05/01/20 01:02:40
>>840
メソッドを抜ければ、セルの内容の変更が適用されますが、
セルを抜けるまでは表示上は適用されていないみたいです。

private void _dgv_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }
_dgv.Rows[e.RowIndex].Cells[0].Value = (int)(new Random().NextDouble() * 100);
_dgv.Rows[e.RowIndex].Cells[1].Value = "ここ変えた";
CurrencyManager cm =
(CurrencyManager)this.BindingContext[_dgv.DataSource, _dgv.DataMember];
cm.Refresh();
}

こんなこともしてみましたが、無駄でした。
とにかく、Loadメソッドで作動させた
this._dgv.Sort(_dgv.Columns[0], ListSortDirection.Ascending);
が、セル内容変更後、すみやかに適用されません。
「すみやか」でない、とは、表現するのが難しいですが、
前の私の投稿時に紹介した画像をご覧ください。

842 :788:05/01/20 01:27:01
気合で解決しました。

private void _dgv_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }


int num = (int)(new Random().NextDouble() * 100);
((DataRowView)_dgv.BindingContext[_dgv.DataSource, _dgv.DataMember].Current).Row[0] = num;
((DataRowView)_dgv.BindingContext[_dgv.DataSource, _dgv.DataMember].Current).Row[1] = "ここ変えた";

// _dgv.Rows[e.RowIndex].Cells[0].Value = (int)(new Random().NextDouble() * 100);
// _dgv.Rows[e.RowIndex].Cells[1].Value = "ここ変えた";
// CurrencyManager cm =
// (CurrencyManager)this.BindingContext[_dgv.DataSource, _dgv.DataMember];
// cm.Refresh();
}

お騒がせしました〇r4z...

843 :788:05/01/20 01:32:06
なんか、2005になっても、あまり2003とかと
変わらないんですね。
もっと簡単にいくと思ってました。期待しすぎました。
というか、僕が理解してなさすぎかもしれへんけど。

844 :デフォルトの名無しさん:05/01/20 01:37:27
そんなややこしいことしなくても _dgv.Rows[e.RowIndex].Cells[0].Value で
普通にデータ更新されてるけどねうちは…。

845 :796:05/01/20 09:44:46
ファイルを一行ずつ読み込んで、DBを一件ずつ更新する処理をするプログラムを書いています。
特定のデータであった場合、従来行う処理とは別の処理を行ってから、従来の処理を行います。
ちなみに、特定のデータであるかどうかの判定は、従来の処理を行わないと分りません。
どのようなコーディングすれば、綺麗?なのか教えて下さい。
今は、下記のような感じで書いてます。

while ((line = stream.ReadLine()) != null)
{
bool ret = 従来処理();

// 特定データの場合
if (ret == false)
{
特別処理()
従来処理()
}
}

846 :デフォルトの名無しさん:05/01/20 09:48:57
従来処理による副作用は?
従来処理を複数回やっても大丈夫なの?
従来処理をやらずに判定することは本当に不可能なの?

847 :デフォルトの名無しさん:05/01/20 10:08:44
>>846
従来処理は1件のデータにつき一回だけ発行します。
特定のデータはどうかの判定は、従来処理の戻り値で
判断する以外、方法がありません。


848 :デフォルトの名無しさん:05/01/20 11:26:02
>>847
それ以外に無理でしょう
あとはDBのトリガーなどでDB上で処理するとかあるかもしれませんが

849 :デフォルトの名無しさん:05/01/20 15:58:25
RSSを取得したいんですが、例えば以下のようにローカルのファイルから読み込んでタイトルを取得しようとしても
ぬるりが出てうまくいきません。
どうすれば出来るか教えてください。
ちなみにローカルに保存してるファイルは、
http://blog.livedoor.com/xml/recent_articles_cat1.rdfここからダウンロードしたものです。
よろしくお願いします。

string strRssTitle;

XmlDocument xml = new XmlDocument();

System.IO.StreamReader str = new System.IO.StreamReader(@"E:\recent_articles_cat1.rdf");
System.Xml.XmlReader reader = new System.Xml.XmlTextReader(str);
xml.Load(reader);

XmlNode root = xml.DocumentElement;

strRssTitle = root.SelectSingleNode("/rdf/channel/title/text()").Value ; //ここでぬるり発生

850 :デフォルトの名無しさん:05/01/20 18:52:56
dotGNUのスレがないのでここでききます。
System.Windows.Formsで日本語を表示する方法を解説きぼんぬです。


851 :デフォルトの名無しさん:05/01/20 18:56:02
StripStatusBar? 2005の強化されたステータスバーありますよね。
そこにProgressBarを追加したのですが、
ForeColorの変更が適用されません。
BackGroundColorは変更できました。
教えて、ェ□ヰ人。

852 :デフォルトの名無しさん:05/01/20 19:43:17
コンポーネント(windows)を作っているのですが
デザイン時だけプロパティを追加できないでしょうか?

追加したいプロパティはデザイナ側に実装して
そのデザイナのプロパティの値によってコンポーネント側の
プロパティを設定したいのですが

コンポーネント側には追加したくないので

どなたかお願いします



853 :デフォルトの名無しさん:05/01/20 20:22:52
>>849
ttp://www.luckypines.com/GDNJS_SIDEB/3.htm
ttp://www.atmarkit.co.jp/fdotnet/easyxml/easyxml05/easyxml05_03.html
名前空間付きのは処理がめんどくさい……。
XmlNamespaceManagerのDefaultNamespaceは無視されてる……のか?
XMLでは接頭辞無しの要素名にもコード側で適当に決めた接頭辞でNamespaceURIをAddNamespaceし、XPath式で使う必要がある……のか?

>>851
普通に適用できたけどなぁ。
WEB上にもそんなバグの報告はないようだし。
StatusStripにのせたToolStripProgressBarの話だよね?
//どうでもいいがもうちょっと名前空間を工夫するとか無かったのかねToolStripやらWebBrowserやら > MS

>>852
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconImplementingExtenderProvider.asp
こういうことかな?

854 :デフォルトの名無しさん:05/01/20 20:27:10
すいません、c#が死滅の一途をたどっているといううわさは本当なのでしょうか?

855 :デフォルトの名無しさん:05/01/20 20:30:00
・ω・`) 藻舞だけちゃう

856 :デフォルトの名無しさん:05/01/20 20:32:59
言語仕様としては Java よりは優れていると思うよ
でもその点以外ではもうだめぽ

857 :デフォルトの名無しさん:05/01/20 20:36:02
     彡∩)) _, ,_  _, ,_
  ((⊂((⌒⌒((Д´≡`Д)) そんなこといっちゃやだやだぁぁぁ ――――― !!!
      `ヽ_つ ⊂ノ


858 :デフォルトの名無しさん:05/01/20 21:17:02
>>853

IExtenderProviderではなくComponent継承です

単純にVSのデザイナ上に
デザインモード時だけプロパティを追加したいのです。

859 :デフォルトの名無しさん:05/01/20 21:18:19
http://rfc-jp.nic.ad.jp/cgi-bin/direct.cgi?keyword=2616&language=eng&x=24&y=4
128頁に書いてある。仕様関係はまずRFC読む。


860 :デフォルトの名無しさん:05/01/20 21:19:39
誤爆です、すまんこ。


861 :デフォルトの名無しさん:05/01/20 21:22:42
ntpサービスを利用するためのサンプルコード、
どなたかご存知ないですか?

862 :デフォルトの名無しさん:05/01/20 21:26:53
>>858
DesignOnlyAttributeだ!
実際にどうなるのかは知らない。

863 :デフォルトの名無しさん:05/01/21 00:53:03
ちょいと教えてくださいまし

OpenFileDialogで開くコモンダイアログをカスタマイズして
チェックボックスとか付けたいんですがC#で実装する
方法がわからないのです
ヒントとかないですかね?



864 :デフォルトの名無しさん:05/01/21 01:31:24
>>863
派生

865 :デフォルトの名無しさん:05/01/21 02:19:04
>>852
案:
・PropertyDescriptorを継承するクラスを作り、「見せ側」プロパティと「実体」プロパティのプロクシとする。
・「見せ側」の方を基底コンストラクタの引数として渡し、GetValue/SetValueなどの操作は「実体」プロパティを対象にする。
・PreFilterPropertyメソッドのオーバーライドで、引数のIDictionaryに上記のクラスのインスタンスを適当なキーで追加する。

866 :デフォルトの名無しさん:05/01/21 02:59:36
RichTextBox.AppendTextでたまにアプリがフリーズするんだが、何が原因として考えられるだろうか。

867 :デフォルトの名無しさん:05/01/21 14:54:05
メモリ不足とか?
経験無いから何とも言えないけど。
WEB上にも少なくとも日本語の範囲ではRichTextBoxにせよRich Editにせよそれらしい情報がないし。

868 :デフォルトの名無しさん:05/01/21 16:18:14
テキストが長すぎるとか?

869 :デフォルトの名無しさん:05/01/21 17:40:31
フォームに、画像を読込むたび新しいPictureBoxを生成し
複数の画像をフォーム内に読込めれるようにしたいのですが、

OpenFileDialog openFileDialog = new OpenFileDialog();

if(openFileDialog.ShowDialog() == DialogResult.OK)
{
  PictureBox picturebox1 = new PictureBox();
  Bitmap bmap = new Bitmap(openFileDialog.FileName);

  picturebox1.Image = bmap;
}

では画像が表示されませんでした。足りない部分、間違っている部分を
教えてください。よろしくお願いします。

870 :デフォルトの名無しさん:05/01/21 17:45:18
作成したPictureBoxの、フォームのControlsへの追加を忘れてる。

サムネイルか?

871 :デフォルトの名無しさん:05/01/21 21:02:08
>>866
コントロールのスレッドでちゃんとアクセスしてる?
別のスレッドからアクセスしている場合は同期とらないとダメだよ。
Form.Invoke()とかで。

872 :デフォルトの名無しさん:05/01/22 00:35:40
初歩的な質問で誠に申し訳ない、本当に申し訳ない、兎に角申し訳ない・・・

プログラムを起動したら自分自身を
C:\ProgramFiles\●●\abc.exe
とかにコピーする方法ってないでしょうか?
当然というかなんというか自分自身をコピーしようとするとエラーがでるので・・・
宜しくお願い致します。

873 :デフォルトの名無しさん:05/01/22 00:40:17
コピーならできるはずだが?

874 :デフォルトの名無しさん:05/01/22 01:08:29
>>872
using System;
using System.IO;
using System.Reflection;

namespace Test
{
  class Class1
  {
    [STAThread]
    static void Main(string[] args)
    {
      string aname = Assembly.GetExecutingAssembly().Location;
      File.Copy(aname, @"D:\copy.exe", true);
    }
  }
}
普通にコピーできますが。

875 :デフォルトの名無しさん:05/01/22 02:12:13
>>874
\記号をエスケープしなくていいのか?


876 :デフォルトの名無しさん:05/01/22 02:13:16
@ありましたね、これは早とちりを失礼しました。


877 :869:05/01/22 10:51:50
>>870
なるほど。フォームに追加の記述を足してみました。

OpenFileDialog openFileDialog = new OpenFileDialog();

if(openFileDialog.ShowDialog() == DialogResult.OK)
{
PictureBox picturebox = new PictureBox();
bmap = new Bitmap(openFileDialog.FileName);
picturebox.Image = bmap;

this.Controls.Add(new Button());

}

サムネイルという言葉をよく知らないので何とも言えないのですが、
実現したいことは、ページに何枚も画像を読込むことが出来る。
と、いった風なことです。例えばワードの図の挿入みたいに。
現在の記述では1回目は画像を読込んでくれるのですが、2回目以降
のから画像を読込みません。PixtureBoxの生成の仕方が悪いのでしょうか?

878 :デフォルトの名無しさん:05/01/22 11:10:37
>>877
生成の仕方が悪いです。
OpenFileDialogのNamesプロパティをforeachでぐるぐる回すとかしてあげないと
希望の動作にはならないんじゃないかなあ。
ってそのあたり省略してたものと思ってましたが…。
そうじゃなくて2回目のダイアログで選択した画像が表示されないということ?
PictureBoxのLocationが全部同じで同じところに配置されてるとかいうオチ?

879 :869:05/01/22 11:36:55
>>878
ご指摘通り、2回目のダイアログで選択した画像が表示されない
という点で悩んでます。PictureBoxが同じ位置に配置される点は
今は問題視していません。具体的な実現方法が分からないので、
良い手段があれば教えて下さい。_| ̄|○ペコッ

880 :デフォルトの名無しさん:05/01/22 11:44:05
>>879
> bmap = new Bitmap(openFileDialog.FileName);

同じbmap使い回したら駄目でしょう。

881 :869:05/01/22 11:52:00
Σ(゚Д゚;)そうなんですか。では事ある度に新しいBitmapを生成
しなきゃいけないんですね。そうなると、
Bitmap ○○○ = new Bitmap(openFileDialogFlieName);
の○の部分をどうすればいいのでしょう?
お手数かけてホントにすみません。

882 :デフォルトの名無しさん:05/01/22 11:54:11
>>880
> 同じbmap使い回したら駄目でしょう。
まあそれはそうだけど本質ではないな。
//PictureBox.Imageとして元絵の参照は残るわけだから、問題ないと言えば無い。

Controls.AddしたものはZオーダー(コントロールの手前・奥)が一番後ろになる。
つまり先に置いたのに邪魔されて見えないだけ。
手前に持ってくるのがBringToFrontメソッド。

ところで、PictureBoxコントロールのサイズは、別にImageプロパティを設定したところで
勝手にImageプロパティのイメージサイズに変わるわけではないってのは分かってる?

883 :デフォルトの名無しさん:05/01/22 12:09:54
>>882
あーすみませんその通り。問題ないといえばなかったです。
picturebox.SizeMode = PictureBoxSizeMode.StretchImage
とかやると原因究明の手がかりになるかもしれないしならないかもしれない。

884 :デフォルトの名無しさん:05/01/22 12:14:28
picturebox.SizeMode = PictureBoxSizeMode.AutoSize
だったorz

885 :869:05/01/22 12:15:10
それも初耳でした…PictureBoxのサイズが自動的にイメージと同じ
サイズになると思ってました。基礎知識の方で問題点が多いですね…。
勉強になります。

886 :デフォルトの名無しさん:05/01/22 13:32:35
ntpシステムにC#でアクセスする方法を教えていただけないでしょうか。

887 :デフォルトの名無しさん:05/01/22 14:01:48
>>886
http://www.codeproject.com/csharp/ntpclient.asp
byte[48]をRFC2030に従って整形してUDPで送受信するというのが大まかな流れみたい。

888 :デフォルトの名無しさん:05/01/22 18:00:26
http://altba.com/bakera/hatomaru.aspx/ebi/topic/912

こういうのもみつけた。

889 :886:05/01/22 19:57:00
>>887
390831

890 :デフォルトの名無しさん:05/01/22 22:12:32
class Hogeで
public string this[int index] { get〜set〜} を定義すれば、
Hoge hoge = new Hoge();
hoge[5] のようなアクセスができますよね。

これをhoge.Fuga[5]のようにしたくて
public string Fuga[int index] のようにしてみたけどダメでした

こういうことをするためにはどうしたらいい?

891 :デフォルトの名無しさん:05/01/22 22:16:48
C#では名前付きインデクサは無理。

892 :デフォルトの名無しさん:05/01/22 22:59:39
>>890
class HogeProxy
{
 Hoge hoge;
 public string this[int i]
/* 中略 */
}

class Hoge
{
 public HogeProxy Fuga
/* 中略 */
}

Hoge hoge = new Hoge();
hoge.Fuga[i];

893 :デフォルトの名無しさん:05/01/22 23:21:17
class Cmyclass{
___private int data;
___static Cmyclass[] myclasses;
___static Cmyclass(){
______myclasses = new Cmyclass[10];
______foreach(Cmyclass myclass in myclasses){
_________myclass = new Cmyclass();
______}
___}
___public Cmyclass(){
______data = 0;
___}
___public void display(){
______Console.WriteLine(data.ToString());
___}
}

class _formMain(){
___for(int i=0;i<Cmyclass.myclasses.Count;i++)
______Cmyclass.myclasses[i].display();
}

894 :デフォルトの名無しさん:05/01/22 23:31:36
ところでアンダースコアでインデントというのはコピペもできんわ読みづらいわで最悪だと思うんだがどうか。

895 :デフォルトの名無しさん:05/01/22 23:37:36
素直に「&nbsp;」をコピペすれば良いのに

896 :893:05/01/22 23:39:20
>>894
Cntl+H で削除して栗。

>>895
それを最初に言えよ、ヴァカ(>_<)

897 :デフォルトの名無しさん:05/01/22 23:55:12
VSで混合モードのパネルがどんどん増えていく上に消せないんですが・・・
これは一体なんですか。


898 :893:05/01/23 00:03:43
>>897
合混モードパネルなら、どんどん増やしたいんだがな。

899 :デフォルトの名無しさん:05/01/23 00:05:33
プログラムが自分自身を削除することってできる??

900 :893:05/01/23 00:12:22
>>899
this.Close();

901 :デフォルトの名無しさん:05/01/23 00:13:33
動作中に自分自身の実行ファイル名をリネームすることはできるが
上書きしたり削除は無理、だと思う。

902 :デフォルトの名無しさん:05/01/23 00:13:34
>>899
アンインストーラみたいなことやるなら
セットアッププロジェクトにやらせればいいんじゃないかな。
それともウィルスとかみたいに居なくなるのを希望しているんだろうか…。

903 :デフォルトの名無しさん:05/01/23 00:39:54
C#で作ったアプリメモリ異常に食ってる(ウィザードアプリでも)んですが。
小さくして目盛り減るけれど、これは何?残ったのが実質のコードだということ?

904 :デフォルトの名無しさん:05/01/23 01:24:34
現在のPCのSYSTEMTIMEと、
ある特定のSYSTEMTIMEとを比較し、
その差を表示することはできるのでしょうか。
できるとしたら、どのようにすればよろしいのでしょうか。

905 :デフォルトの名無しさん:05/01/23 01:26:28
>>891のようなデザインパターンって何て言うんだっけ?

906 :デフォルトの名無しさん:05/01/23 02:01:58
DateTime

907 :デフォルトの名無しさん:05/01/23 02:30:19
>>903
キャッシュじゃない?

908 :デフォルトの名無しさん:05/01/23 06:41:39
よく右クリックすると選択肢のウィンドウが
出るじゃないですか?
アレって一般的にはどのコントロール使ってるんで
しょうか?それとも別な方法がありますか?

909 :デフォルトの名無しさん:05/01/23 09:43:56
ContextMenuのことか?

910 :デフォルトの名無しさん:05/01/23 14:03:43
ラベル1にマウスが乗るとカーソル非表示。ラベル1から離れるとカーソル表示としたいのですが、
'Cursor'はあいないな参照です。とエラーが出ます。何が原因か分かる人いますか?よろしくお願いします。

private void Label1_MouseEnter(object sender, System.EventArgs e)
{
   Cursor.Hide ();
}

private void Label1_MouseLeave(object sender, System.EventArgs e)
{
   Cursor.Show ();
}

現在こんな感じです。

911 :デフォルトの名無しさん:05/01/23 14:22:14
>>910
隠すのではなく、見えないカーソルに変更しる

912 :デフォルトの名無しさん:05/01/23 14:23:04
無料で使えるIDEを教えてください

913 :デフォルトの名無しさん:05/01/23 14:25:55
【.NET】C♯Builder Personal update 2【フリー】
http://pc5.2ch.net/test/read.cgi/tech/1058786955/

914 :910:05/01/23 14:29:59
>>911
記述がおかしいという意味でしょうか?

915 :デフォルトの名無しさん:05/01/23 14:43:01
>>910
Cursorが何かとバッティングしてるだろうから
System.Windows.Forms.Cursor.Hide (); にすればいいような。

916 :デフォルトの名無しさん:05/01/23 15:33:17
string hoge = "ほげほげ\r\nふがふが\r\nまげまげ";
ってのを"\r\n"で区切ってstring[] にしたいんだけど、
string.replaceだとcharかchar[]しか区切り文字に指定できなくて、
new char{'\r','\n'}で区切ると当然、
"ほげほげ" "" "ふがふが" ...
のようになってしまうわけ。

文字列で区切るにはどうしたらいいの?

917 :デフォルトの名無しさん:05/01/23 15:50:34
>>916
RegexのSplitとか。

918 :デフォルトの名無しさん:05/01/23 16:31:32
dクス!そんなところにかくれてたんですか・・・・

919 :デフォルトの名無しさん:05/01/23 16:38:14
念のために
http://pc5.2ch.net/test/read.cgi/tech/1045307942/574

920 :デフォルトの名無しさん:05/01/23 18:11:23
3つの事象は等しく発生するという仮定で、3つの場合分けを行う場合、
if else文を使うのと、switch文を使うのとでどっちが速いですかね?

誰か分かりませんか?

921 :デフォルトの名無しさん:05/01/23 18:13:24
コンパイルしてReflector for .NETで調べてみたらわかりそうな気がする

922 :デフォルトの名無しさん:05/01/23 18:13:54
switch を使ってもコンパイルしたら if else になっちゃうよ

923 :デフォルトの名無しさん:05/01/23 18:14:42
ILDASMのほうがいいんじゃないかな。

924 :デフォルトの名無しさん:05/01/23 18:20:28
opcodeにはswitchもあるよ。

ただそんな事を考える意味があるとは思えないけど。

925 :デフォルトの名無しさん:05/01/23 18:24:33
そこまでスピードにシビアな開発を.NETでやることの妥当性をまず考えるべきだ。


926 :デフォルトの名無しさん:05/01/23 18:26:45
Javaのsuper()はC#ではどのように書くのでしょうか。

927 :デフォルトの名無しさん:05/01/23 18:36:41
public Hoge() : base() {...}

基底クラスのコンストラクタだよね?
//指定しない場合は基底クラスのデフォルトコンストラクタが自動的に呼ばれるから上記コードは意味がないが。

928 :デフォルトの名無しさん:05/01/23 18:51:18
>>927 thx!

929 :デフォルトの名無しさん:05/01/23 18:54:29
NTPData = TimeSocket.Receive(ref EPhost);

私のPC環境では、NTPサーバーから時刻情報を得ようとしても、
この行でとまってしまいます。
なぜでしょうか。

887 :デフォルトの名無しさん :05/01/22 14:01:48
>>886
http://www.codeproject.com/csharp/ntpclient.asp
byte[48]をRFC2030に従って整形してUDPで送受信するというのが大まかな流れみたい。

なお、XPsp2インスト済み
ノートンインターネットセキュリチなし

お願いいたします。


930 :デフォルトの名無しさん:05/01/23 19:07:17
プロセスの起動と終了を感知することってできますか?
ご指導お願いしますm(_ _)m

931 :929:05/01/23 20:16:54
>>930
できます。以前、そのようなプログラムを作成しました。
プロセスが実行中(数値計算でした)も、フォームが凍らないタイプです。
家に帰ったら、サンプルを貼ります。がんばってください。

932 :デフォルトの名無しさん:05/01/23 20:36:33
>>929
リクエストが返ってこないからだろう。
他のホストで試してみたらどうなる?

933 :930:05/01/23 20:47:13
>>931お願いします。
頑張ります。

934 :デフォルトの名無しさん:05/01/23 21:02:59
プロセスとスレッドを混同している予感

935 :デフォルトの名無しさん:05/01/23 21:04:30
軽量プロセスだからいいんじゃね?

936 :デフォルトの名無しさん:05/01/23 22:13:37
C#でWordを操作するソフトを趣味で開発しています。
このサイトを参考にしています。
http://www.ne.jp/asahi/office/okada/macro/
しかしながら、
With .Parent
End With
というのがよくわかりません。
確かに、FindクラスにParentというものがありますが、
Parent.Deleteのような使い方ができません。
やりたいことは、このサイトと同じことなのですが・・・・。
ちなみに、wdReplaceALLとかwdReplaceOneとかで同じことが
できるか試してみましたが、うまくいきませんでした。;
wdReplaceOneを設定すると、Find.Executeの返り値が検索終了後falseに
ならないからうまくいきませんでした。

937 :936:05/01/23 22:19:02
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsintro7/html/vxproparentproperty.asp
参考URL

938 :デフォルトの名無しさん:05/01/23 22:25:42
WithはVBのキーワード。詳しくはヘルプ。

で、Parentが返すのはobject型なわけで、objectにDeleteとかがないのは分かるよね?
object a = "hoge";
a.IndexOf("o");
とかできないのと同じ。
適切な型にキャストしてやりましょう。
//ブレークポイントで何型か調べるとか。

939 :デフォルトの名無しさん:05/01/23 22:34:50
やっぱり混同してる予感

940 :931:05/01/23 22:58:55
>>930
お待たせしました。
参考になれば幸いです。
private void ProcessRun(string filename)//プロセス制御
{
process=Process.Start(filename);
process.EnableRaisingEvents=true;
process.Exited+=new EventHandler(Process_Exited);
//プロセス終了時を取得状態にする
MainText.Text=String.Format(" {0} / {1}",listcount,filelist.Items.Count);
}

private void Process_Exited(object sender, EventArgs e)
{
if(listcount>=filelist.Items.Count)//実行していないプロセスがないなら
{
MainText.Text="Process Done";//処理終了
return;
}
else
{
ProcessRun(filelist.Items[listcount++].ToString());
//次のプロセス開始
}
}

941 :931==936:05/01/23 23:04:33
>>938
レス39です。
当方、withがVBだ、等はばっちりです。
質問時には、すでにキャストも試みました。
object型がDeleteないのとかもばっちり把握しています。
object型は使用時、キャストを利用するのが一般的だと、存じています。
デバッグでどの型にParentをキャストしてあげれば、
Deleteメソッドを使えるのかがわかりません。
表現がおかしいですね。
Deleteメソッドを搭載したどのクラスにキャストすればよいのか
わかりません・・。調べられるものなのですか?
調べるコツとか教えていただけると助かります。
Goto End;

942 :931==936:05/01/23 23:07:22
>>940
念のため追記。
int listcount;
private void PlayButton_Click(object sender, System.EventArgs e)
{//プロセス開始
listcount=0;
if(filelist.Items.Count==0)
{
MainText.Text="No Process";
return;
}
ProcessRun(filelist.Items[listcount++].ToString());
}

943 :デフォルトの名無しさん:05/01/23 23:14:22
基本的なことを教えてください。
クラスのフィールドとして定義され、かつ同時にnewされた
フィールドは、実際にはいつnewされるのでしょうか。
コンストラクタでしょうか?

public class Test
{
 private ArrayList al = new ArrayList();
}


944 :デフォルトの名無しさん:05/01/23 23:15:54
>>941
一旦.Parentをobjectにでも突っ込んで、その次の行でブレークしてみる。
自動変数の項目にそのオブジェクトが何型かも書かれてる。

>>940
>930が求めてるのは自分で起動するわけではないプロセスについての監視じゃないのか?
そうならWMI、ManagementEventWatcherと言うキーワードを出しておこう。

945 :931==936:05/01/23 23:21:20
>>944
>>parent
タンクスコ!

>>944
>>930
そうであれば、ほかの方、ヨロシコ!

946 :931==936:05/01/23 23:23:30
>>943
僕は、コンストラクタでnewしてるよ。
いつされるか、わからないから、とりあえず一般的な手法として。

947 :デフォルトの名無しさん:05/01/23 23:24:39
>>943
コンストラクタメソッドの実行前。

948 :931==936:05/01/23 23:25:02
public class Test
{
 private CmyClass mc = new CmyClass();
}

public class CmyClass{
public CmyClass(){
Messagebox...
}
}
とかすれば、わかる希ガスるん。

949 :名無しさん♯:05/01/23 23:25:36
次スレ立てときますた。( ゚д゚)ノ
http://pc5.2ch.net/test/read.cgi/tech/1106490240/l50

950 :デフォルトの名無しさん:05/01/23 23:28:34
乙と言えば乙だが、このスレは950よりも前に次スレ立てる縛りでもあるのか?

951 :デフォルトの名無しさん:05/01/23 23:30:52
>>949
乙。
教えて君で申し訳ない。
最小化でタスクトレイ?(時計の脇のノートンとかがあるところ)に入れたいんだが
どうしたらいいんだろう。

952 :930:05/01/23 23:34:29
みなさんいろいろありがとうございます。
説明不足ですいません(汗)
プロセスの監視をしたいので>>944さんのを参考にさせていただきます。

953 :931==936:05/01/23 23:38:09
>>951
ShowinTaskbar = false;
で、
ツールからNotifyIconをD&D。
アイコン作って、・・・。
宇宙仮面に載ってるよ。

954 :デフォルトの名無しさん:05/01/23 23:40:32
>>953
ありがとう、とりあえず宇宙仮面に逝ってくる

955 :名無しさん♯:05/01/23 23:42:05
>>950
まあ本当は950過ぎてからなんでしょうけど、つーか縛りはないですよ。

>>951
漏れはWindowsFormsは忘れ去ってるので、他を当たってくだされ。

956 :デフォルトの名無しさん:05/01/24 00:05:56
24時間前は900あたり。スレ消費が早いな。

957 :908:05/01/24 00:35:11
>>909トンX!!

958 :デフォルトの名無しさん:05/01/24 01:01:40
RTFの仕様詳しく説明してるとこ教えてください。
C#が生成せるRTFはワードパッドが生成するRTFと全然違って困ってます。

959 :デフォルトの名無しさん:05/01/24 01:11:24
>>958
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnrtfspec/html/rtfspec.asp
これかな。
日本語訳はMSDN Japanにはないみたい。よく調べてないですが。

960 :デフォルトの名無しさん:05/01/24 01:33:51
誰かPowerToolsのTrue WebGridとか使ってる香具師いる?


961 :デフォルトの名無しさん:05/01/24 01:42:13
使い勝手はどう? とか、ちょっと上手く動かないんだけど。とかなら分かるが、
使ってるかどうかのアンケートに意味があるのか?

962 :デフォルトの名無しさん:05/01/24 13:23:22
ArrayListで作ったコレクションって、どんなオブジェクトもAdd()出来てしまいますよね。
前もって指定された形式以外のオブジェクトが入らないようにできるコレクションクラスって
何かあるんでしょうか?

それとも、MSDNにインタフェースについての記述があるように、
どんな時も自作コレクションクラスを作って、自分でその辺の管理をするべきなんでしょうか?

963 :デフォルトの名無しさん:05/01/24 13:29:01
.NET1.1までならフレームワークに用意されてるのはstringに対するStringCollectionくらいかね。
.NET2.0でジェネリクスが追加される事で汎用的な型指定コレクション・List<T>クラスが使えるようになる。

964 :962:05/01/24 13:35:43
有難うございます。やっぱり2.0出てくるまで簡単には出来ないんですよねぇ。
いいです。今回は、何も気付かない振りして、実装しちゃいます。
まぁ、2.0も今年中には出ますよね。
どうも有り難うございました。

965 :デフォルトの名無しさん:05/01/24 14:02:00
>>962
自前のコレクションクラスを作って、
Addするときに期待しないものが来たら例外を投げるようにするとか。

966 :962:05/01/24 14:05:18
>>965
まさしく、そんな予感がしていたんですが、面倒そうだったので・・・
そうなんですよね、正しくはそうあるべきだと思います。
でも〜。・゚・(つД`)・゚・


967 :デフォルトの名無しさん:05/01/24 14:05:30
>>962
CollectionBaseクラスを継承しる

968 :デフォルトの名無しさん:05/01/24 16:02:17
>>966
どっかに専用コレクションクラスを生成するツールがあったぞ

969 :デフォルトの名無しさん:05/01/25 11:47:39
PictureBoxをマウスのドラッグで縮小、拡大させたいのですが、
参考になるHPとか本を誰か知っていませんか?
読み込んだ画像の上でクリックすると、画像の四隅にポイントが出て、
そのポイントをドラッグすることで画像が縮小、拡大する。みたいな。
情報があれば、よろしくお願いします。

970 :デフォルトの名無しさん:05/01/25 12:13:45
>>969
ウィンドウそのものを縮小拡大ではなくて、PictureBoxコントロールを縮小拡大ですか?
そうであればControlとかPictureBoxを継承して自前で作るしかないような気がします。
MouseMoveあたりでマウスの位置を検出して端に近ければ四隅にポイント表示。
四隅に近くてクリックされている間はコントロールをマウスの位置に合わせてリサイズ。
もっと簡単な方法もあるかもしれませんが一応。

971 :デフォルトの名無しさん:05/01/25 16:51:57
>>969
そういうコンテナを作ってドッキングさせるとか

972 :デフォルトの名無しさん:05/01/25 21:24:58
MainMenu のアイテムがクリックされた場合の処理は、
アイテム毎にイベントハンドラを増やさないといけないのでしょうか?

例えば、次のような事をやりたいのですが、なにかいい方法は
ありませんか?

メニュー1_________メニュー2_______メニュー3
__アイテム1-1______アイテム2-1______アイテム3-1
__アイテム1-2______アイテム2-2______アイテム3-2
__アイテム1-3______アイテム2-3______アイテム3-3

のようなメニュー構成になっている時に、
アイテム1-x がクリックされた場合の処理は、メニュー1 の Click で
拾ってメニュー1の中で処理させたいのですが…。

今は、アイテム1-1, アイテム1-2, アイテム1-3 など全ての項目の
Click イベントに1つずつちまちまと処理を追加していっています。

何かいい方法はないでしょうか?

973 :デフォルトの名無しさん:05/01/25 21:30:00
イベントハンドラ共有して、senderを見て発生元調べてswitchで分岐したら。


974 :デフォルトの名無しさん:05/01/25 22:23:42
そういうの登録する仕組み作っとけ

975 :デフォルトの名無しさん:05/01/25 23:25:08
ArrayListを配列にして使用できるんでしょうか。こんな感じで。

ArrayList[] testList = new ArrayList[10];
testList[0].Add( "abc" );

コンパイルは出来ても2行目でエラーになります。
出来れば楽なんですが・・・。


976 :デフォルトの名無しさん:05/01/25 23:29:22
配列もただのオブジェクトなわけで、newしても入れ物を作るだけ。
入れ物の中身は自分で作って下さい。

977 :デフォルトの名無しさん:05/01/25 23:30:12
ArrayList[] testList = new ArrayList[10];
testList[0] = new ArrayList();
testList[0].Add( "abc" );

978 :975:05/01/25 23:37:56
>>976
>>977
即レス感謝です。もういちどnewしておく必要があるわけですね。納得です。

979 :デフォルトの名無しさん:05/01/26 11:53:42
ほかの人のソース見ていてinternalが多用されているのですが、
本を読んでもprivateとinternalの違いがよく分からないのです。
教えてください。

980 :デフォルトの名無しさん:05/01/26 12:04:44
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfdeclaredaccessibilitypg.asp


981 :デフォルトの名無しさん:05/01/26 12:49:31
>>979
internalを意識しなければいけないのはDLLを作る時ぐらいでしょ。
単体で動くものを作っている時は無視していいよ。

982 :デフォルトの名無しさん:05/01/26 13:42:23
>>979
private : 同一クラス内ならアクセス可
internal : 同一dll/exe内ならアクセス可

983 :デフォルトの名無しさん:05/01/26 13:52:27
private と internal を比較するよりもむしろ public と internal を比較
したほうが理解しやすいと思われ。

984 :デフォルトの名無しさん:05/01/26 15:22:59
>>981-983
ありがとうございます やっと分かりました

985 :デフォルトの名無しさん:05/01/26 16:14:26
C#では共有フォルダを作る関数ないですか?
VC++でNetShareAddってのがあったのですが
これ同等のないですかね?

986 :デフォルトの名無しさん:05/01/26 16:29:36
ないようだね。

987 :yamada:05/01/26 16:32:24
こちらに書き込むべき内容かどうか分らないのですが
教えて頂きたく、書込致しました。 CGIへデータをPOSTして、結果を取得する部分で困っております。
以下@のように、リクエストした結果のレスポンスを取得しております。
しかし時々、HTTPステータスコードがokであるにも関わらず、データ部が空で取得されております。
レスポンスのヘッダー部を調べましたら、Aのようなデータが返ってきておりました。
HTTPステータスコードがcontinueである後に、続いてokと記載されている部分が
異様に感じられます。 ※アプリケーションでは、このレスポンスをStatusCode=okと判断している。
なぜこのような現象が起きているのか
ご存じの方がおられましたら教えて下さい。
また、回避方法があれば、教えて頂きたく思います。
宜しくお願い致します。
@----------------------------------------------------------------
WebRequest req = HttpWebRequest.Create("http://test.cgi");
(中略)
HttpWebResponse res;
HttpStatusCode st;
do
{
res = (HttpWebResponse)req.GetResponse();
st = res.StatusCode;
}while(st == HttpStatusCode.Continue);
Stream sr = res.GetResponseStream();
A-----------------------------------------------------------------
HTTP/1.1 100 Continue....HTTP/1.1 200 OK..
Date: Wed, 26 Jan 2005 04:10:48 GM
T..Server: Apache..Transfer
-Encoding: chunked..Content
-Type: text/html・・・・(中略)

988 :デフォルトの名無しさん:05/01/26 16:35:17
マルチポストお一人様ご案内。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18454&forum=7&0

989 :デフォルトの名無しさん:05/01/26 16:38:24
山田さんいらっしゃい

990 :デフォルトの名無しさん:05/01/26 16:38:28
>>986
ないのか・・・(´・ω・`)
レスども

991 :yamada:05/01/26 16:45:46
僕の説明、訳わかんないから
レスが付かないのでしょうか・・。

>>988
なぜか恥ずかしい止めて・・・。

992 :デフォルトの名無しさん:05/01/26 17:20:45
>>987
100 Continue は別に問題ないでしょう。
.Net 側ライブラリもApacheも適切に処理してるはずです。
どうしても抑制したいなら System.Net.ServicePointManager.Expect100Continue = false; とでもしておけばいいけど。

レスポンスボディが得られないのはまず間違いなく単にcgiがバグってるせいでしょう。

993 :yamada:05/01/26 17:44:41
>>992
ご回答ありがとうございます。
100 Continueは、問題ないのですが、アプリ側でレスポンスのStatusCodeを見ると
200 ok と判断されているのです。
なぜだろう、と思い、調べましたら、>>987Aのような
100 の後に200が記載された訳のわからないヘッダーを持つデータが返ってきています。
これは、普通あり得ないヘッダーではないのでしょうか?
何が原因になっているのかが知りたいのですが・・。

994 :デフォルトの名無しさん:05/01/26 17:48:09
>993
HTTPの仕様を調べれ

995 :デフォルトの名無しさん:05/01/26 18:14:05
>>993
サーバが 200 ok と返してきているから、ステータスコードが200になってるわけです。
100 Continue 200 ok を「わけわからないヘッダー」と感じるのは、
あなたがHTTPの仕様を知らないからです(そもそも、これヘッダじゃないです)。
HTTPでの100 Continueレスポンスの意味については、
ここで説明するものでもないと思うのでRFCでも読んでください。

なんかキツイ表現になってしまいましたが、要するにそんな変なトコみてないで
response bodyが期待したデータじゃないなら、素直にtest.cgiを直すのがよかろう
というようなことを言いたいわけです。

996 :デフォルトの名無しさん:05/01/26 19:19:40
ume

997 :デフォルトの名無しさん:05/01/26 19:20:33


998 :デフォルトの名無しさん:05/01/26 19:21:42
生め

999 :デフォルトの名無しさん:05/01/26 19:22:51
999

1000 :デフォルトの名無しさん:05/01/26 19:25:12
ヽ(・∀・)ノ●ウンコー

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

272 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)