ふらっとC♯(初心者用) Part8

このエントリーをはてなブックマークに追加
440デフォルトの名無しさん
初歩的なことで質問なのですが、
アセンブリの「アンセーフコードの許可」をチェックすることのデメリットってなんでしょうか。
441デフォルトの名無しさん:2006/07/14(金) 05:00:04
USBからOS起動されたらだめじゃん?
442デフォルトの名無しさん:2006/07/14(金) 11:21:51
>>441
 >>433
 >>438
443デフォルトの名無しさん:2006/07/14(金) 11:22:57
>>439
ミミズでも突っ込んどけ
444デフォルトの名無しさん:2006/07/14(金) 11:27:23
>>443
きぁあ変態
445デフォルトの名無しさん:2006/07/14(金) 13:34:08
みなさんいろいろとありがとうございます。
ただ、有効・無効を簡単に切り替えれる必要があるので参考程度にさせていただきます。

現状は他の管理者に無理言って、レジストリエディタやタスクマネージャを制限することにしました

>>437
それのレジストリの書き換えを行うソフトをつくってました。

>>438
最終的にはこういうの使うかもです

ありがとうございました
446420:2006/07/14(金) 16:11:02
>>424
一通り調べてみましたが、System.Management名前空間に関係するいい情報が見つかりませんでした……。
一応、ポートを試しに開いてIO.IOExceptionで処理するようにしたのですが、
やはりスマートじゃないですね。

ManagementObject mo = new ManagementObject("Win32_〜〜.〜〜〜")
この部分が分からなくて困ってるんですが、もし参考資料などありましたら宜しくお願いします。
447デフォルトの名無しさん:2006/07/14(金) 17:00:56
>>446
実際使ったことはないけど、ここあたりから調査を開始すれば何かつかめるんでないかい
一応書いとくと、System.ManagementはWMIの.NETとしての実装だから、移植は簡単

Win32_SerialPortSetting class [WMI]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_serialportsetting.asp?frame=true

Win32_SerialPort class [WMI]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_serialport.asp?frame=true

Win32_SerialPortConfiguration class [WMI]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_serialportconfiguration.asp?frame=true
448デフォルトの名無しさん:2006/07/14(金) 17:04:06
>>446
System.Managementってのは、WMIというシステム情報が格納されているデータベースみたいなもんにアクセスするためのインタフェース。
SQL Serverに対するSystem.Data.SqlClientみたいな感じ。

なので、WMIの構造を知ることと、System.Managementで問い合わせをする方法は別々に学習する必要がある。
前者はCOMとしてのWMIのサイトを参照すれば色々見つかるし、スクリプトならTechNetのスクリプトセンターにサンプルがゴロゴロしてる
後者はMVPの人とかがサンプルを沢山挙げてるから、それで勉強
449デフォルトの名無しさん:2006/07/14(金) 23:19:34
>>447-448
ありがとうございます。ちょっと壁が高そうですが、何とか勉強します。
450440:2006/07/15(土) 21:25:22
レスがない、ということはデメリットは特にないということでよいのでしょうか・・・
451デフォルトの名無しさん:2006/07/15(土) 22:19:18
>>450

何をしたいかによる
452440:2006/07/15(土) 22:29:05
>>451
何をというと何のことでしょうか?
453デフォルトの名無しさん:2006/07/15(土) 22:31:32
それはおまえしか知らない
454デフォルトの名無しさん:2006/07/15(土) 22:36:01
検証できないコードになる。
455デフォルトの名無しさん:2006/07/15(土) 22:36:33
こんなこと言ってるようじゃ危ないな
456440:2006/07/15(土) 22:58:28
すみません、誤解があるようなのですが、アンセーフなコードの危険性は熟知しています。
アンセーフなコードのデメリットではなく、「アンセーフコードを許可する」をチェックすることのデメリットという意味です。
単にアンセーフコードをコンパイルできるかどうかという意味しかなく、実際のデメリットはないという理解でよいのでしょうか。
457デフォルトの名無しさん:2006/07/15(土) 23:03:36
いやだから、なんでそれをしたいのかって話だよ。
アンセーフなコードの危険性を『熟知』してたらそんな質問は出てこないはず。
458デフォルトの名無しさん:2006/07/15(土) 23:15:54
こんな風に気にする人たちがでてくる
ってことじゃないか?
459440:2006/07/15(土) 23:18:03
>>457
別にそこまで深い意味はないのですが、「許可する」をチェックすることで
もし実行環境やプログラム配布の関係で何らかのデメリットが生じるのなら、無理をしてでもすべてセーフコードで書くべきかな、と思ったしだいです。
アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもないので。

あと比較的どうでもいいのですが、たとえば今までアンセーフコードで書いていたコードをセーフコードで書き直すことができるようになった時に、
もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。
460デフォルトの名無しさん:2006/07/15(土) 23:20:09
意味が分からんな。
チェックしなきゃコンパイルできないプログラム書いてんなら、
つけざるをえんだろ。
そしてそれは検証できないアセンブリになる。

「チェックをつけたことによって検証できなくなる」
のかどうかはよく知らないな
でも普通はチェックする必要がないプログラムではチェックしないだろから
そうだとしてもそれがデメリットというかは微妙
461デフォルトの名無しさん:2006/07/15(土) 23:21:23
ああ、>>460>>456の時点で書いたのな。
462デフォルトの名無しさん:2006/07/15(土) 23:28:06
ん、話はもっと単純に
「例えばセーフコードのみのブツをアンセーフ許可してコンパイルしたら違うIL吐くのん?」
てことを聞いてるように見えるんだが、違うのかな。
463440:2006/07/15(土) 23:42:55
>>462
そういうことになりますかね。
ただ、実行コードだけでなく、アセンブリの諸々の情報(あまり詳しくないのですが)も同一である必要があると思います。
ちょっと手元で両方の設定でコンパイルしてみたところ、ハッシュの異なるアセンブリファイルが生成されました。
(同じ設定でもハッシュが異なるファイルが生成されたので、これだけでは何もいえませんが。)
464デフォルトの名無しさん:2006/07/16(日) 00:01:25
コンパイルした日時が変わるだけでハッシュ変わる
465デフォルトの名無しさん:2006/07/16(日) 00:06:59
>もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。
はずしとけ
466デフォルトの名無しさん:2006/07/16(日) 00:10:51
デメリット: アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもない
467デフォルトの名無しさん:2006/07/16(日) 00:13:12
こういうのって何だよ
468デフォルトの名無しさん:2006/07/16(日) 00:45:36
contextMenuStripにtoolStripMenuItemを追加したとします。
それをデザイナからLabelのContextMenuStripに設定したとします。
そしてtoolStripMenuItemをクリックしたときに、
クリックしたLabelのTextを取得したいのですがどうすれば出来るのでしょうか?
string s = ((Label)sender).Textではダメでした。
469デフォルトの名無しさん:2006/07/16(日) 01:16:51
検証できないアセンブリになる
て何回言っても虫ですか。
470デフォルトの名無しさん:2006/07/16(日) 01:19:37
もともと検証しないから、検証できないかどうかは関係ないってことでしょ
471デフォルトの名無しさん:2006/07/16(日) 01:23:20
>>468
(ContextMenuStrip)(((ToolStripMenuItem)sender).Owner).SourceControl.Text
472デフォルトの名無しさん:2006/07/16(日) 01:36:27
>>463
unsafe命令の有る無しに関係なく、/unsafeスイッチをつければ次の属性がONになってる。
assembly: System.Security.Permissions.SecurityPermissionAttribute(SecurityAction.RequestMinimum, SkipVerification=True)
473440:2006/07/16(日) 02:38:15
>>469 >>472
すみません。
検証についてちょっと調べてみたのですが、次のような理解であっていますか?
・「アンセーフコードを許可する」をチェックし、かつアンセーフコードが含まれているとと検証不可能なアセンブリしか生成できない。
・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。

>>472
アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ
> All Classes and Methods in XXX.dll Verified.
と出ました。
これは検証可能なコードが生成されているということですよね。
474デフォルトの名無しさん:2006/07/16(日) 03:56:51
>>473
>アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ 
ILは検証可能であるが、アセンブリがSkipVerificationを要求してる状態。
この状態のプログラムを \\server1\share1\prog.exe で実行するとSystem.IO.FileLoadExceptionで落ちる。
.NET的にはセキュリティ中立(つまりこの属性無しで)でUNSAFEなアセンブリは作れるのだが、
C#のコンパイラはそれを許していない。

>・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。 
ローカルドライブからコマンドプロンプトやエクスプローラで起動した場合、
FullTrust(何でもあり)権限で起動されるので特にポリシーをいじる必要はない。
475440:2006/07/16(日) 05:03:44
>>474
なるほど、非常にわかりやすいレスありがとうございます。
つまり、まとめるとこういうことですね。
・「アンセーフコードを許可する」をチェックすると、アンセーフコードの有無に関わらず SkipVerification の許可が必要になる。
・ネットワーク経由で実行する場合、実行するにはセキュリティポリシーの設定が必要。
・ローカルで実行する場合、デフォルトで FullTrust の許可が与えられるのでこのような問題は一切気にする必要はない。
476デフォルトの名無しさん:2006/07/16(日) 14:21:14
SslStream.AuthenticateAsServer が X509Certificate を要求するため、
適当にプログラム中で生成したいと考えています。
(暗号化のみでいいので認証処理は無視しています)

X509Certificate.CreateFromFile は外部に証明書ファイルが必要になるので
使えない。同Import は渡す byte[] の構造が分からず利用不能。

X509Certificate#GenerateSessionCertificate みたいな感じで
X509Certificateを作る方法はないでしょうか?
477デフォルトの名無しさん:2006/07/16(日) 18:58:32
あります
478デフォルトの名無しさん:2006/07/16(日) 19:54:48
>>471
ありがとうございます。
上手いこと出来ました。
479476:2006/07/17(月) 11:21:39
質問の語尾がまずかったですね。すいません。

X509Certificateをファイルを介さずオンメモリで生成する方法が知りたいです。
X509Certificate#Import が受け取ってくれるバイナリ配列の生成方法でもいい
のですが
480デフォルトの名無しさん:2006/07/17(月) 18:16:14
アッセンブリバージョンとファイルバージョンの違いって何?
どう使い分けたらいいの?
481デフォルトの名無しさん:2006/07/17(月) 23:35:02
>>480
ファイルバージョンは、EXE のプロパティに表示される値。
.NET の世界では重要な意味はないと思う。

アセンブリバージョンは、アセンブリの厳密名を構成する要素のひとつ。
アセンブリのバージョン管理に関わる。
(「厳密な名前」で署名する場合。)

ちょっと難しいけど、↓これが参考になると思う。

@IT:インサイド .NET Framework [改訂版]
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/
482480:2006/07/18(火) 19:25:45
>>481
自分のような趣味で単体ツールを作っているモノとしては、
アッセンブリバージョンはあまり気にしなくても良さそうですね。
リンク先は少しずつ見ながら勉強していきます。
ありがとうございました。
483デフォルトの名無しさん:2006/07/18(火) 20:12:37
> アッセンブリ
という語句を聞きなれていないのは俺が無知だからですか
484デフォルトの名無しさん:2006/07/18(火) 20:13:31
斡旋ぶり
485デフォルトの名無しさん:2006/07/18(火) 20:15:14
アッセンブリをググると機械系のサイトばっかり
アセンブリでググるとプログラミング系のサイトばっかり
486デフォルトの名無しさん:2006/07/18(火) 20:29:55
PDM/PLMの用語だからな。
487デフォルトの名無しさん:2006/07/18(火) 21:55:16
C#2005 EEでVS2003にあったクイックウォッチってないんかな?
488デフォルトの名無しさん:2006/07/19(水) 01:38:13
Proをお買い求めください
489デフォルトの名無しさん:2006/07/19(水) 11:41:28
アッセンブル・インサート ちゅうのは古いか
490デフォルトの名無しさん:2006/07/19(水) 13:39:39
>>488
Pro買わないとダメなのかぁー
Standardに付いていたら購入するのに
491デフォルトの名無しさん:2006/07/19(水) 21:15:28
C#だけつかうならEEもSTDも一緒?
492デフォルトの名無しさん:2006/07/19(水) 21:18:58
んなわけない
493デフォルトの名無しさん:2006/07/19(水) 21:50:34
どこが違うの?
494デフォルトの名無しさん:2006/07/19(水) 21:58:57
MSはもっとC#布教頑張って欲しいな、どう頑張ればいいのか分からんが
このままじゃ自然消滅だよ
495デフォルトの名無しさん:2006/07/19(水) 22:26:13
.NetといえばC#かVB.NETって感じにはなってるけど
言語の普及以前に.Netをなんとかしないとどうしようもないよな
496デフォルトの名無しさん:2006/07/19(水) 22:28:47
>>492
どこが違うの?
497デフォルトの名無しさん:2006/07/19(水) 23:02:10
>>494
MS、結構いろいろやってるはずだけど。
オフィシャル情報多いし、日本語ドキュメントも充実してるし、
標準ライブラリも結構そろってるし、VS 使いやすいし、
コミュニティ支援とかまでやってるし。

これ以上、具体的になにやればいいと思う?
個人的にだけど、一応、C# 普及サイト持っててさ、
個人でもやれることあったらやろうかと。
498デフォルトの名無しさん:2006/07/19(水) 23:19:49
>>493
Visual Studio 2005 Standard Edition / Express Edition 購入方法
http://www.microsoft.com/japan/msdn/howtobuy/vs2005/editions/stdexp/#stdexp_feature

>>494
なぜそう感じるの?
こういうデータは見た?

【ツール利用実態調査の結果報告】プログラミング以外の利用率は3分の1以下:ITpro
http://itpro.nikkeibp.co.jp/article/OPINION/20060419/235678/
※これの「.NET向けツールがJava向けツールに肉薄」

後発の.NETがJavaを追い上げてる
言語的には文中にもあるようにVBとC#で半々だと思う
WebなのかWindowsなのかOSSなのか条件を変えれば色々だと思うけど、先細りな成長ではないはずよ
499デフォルトの名無しさん:2006/07/19(水) 23:50:28
.NETじゃないVBは消滅したんですか?VBAに含まれてるのかな
500デフォルトの名無しさん:2006/07/19(水) 23:53:30
むしろVB.NETが消滅した。言葉だけは。
501デフォルトの名無しさん:2006/07/20(木) 01:31:26
.NETとJavaが肉薄かぁ、これからはJ#の時代ですね
502デフォルトの名無しさん:2006/07/20(木) 01:35:56
そりゃないだろ。
でももしもJavaの世界と.NETの世界を行き来できるのだったら、たしかにJ#はいけるだろうな。
ネイティブと.NETの世界を行き来できるC++/CLIのように。
503デフォルトの名無しさん:2006/07/20(木) 02:47:39
先生、J#スレがありません
504デフォルトの名無しさん:2006/07/20(木) 06:30:15
505デフォルトの名無しさん:2006/07/21(金) 00:18:39
HTMLでいうと<hr>のような
水平線のみのコントロールはどこにありますか?
ツールボックス内を探しても見つからないのですが…
506デフォルトの名無しさん:2006/07/21(金) 00:36:14
GroupBox のTextプロパティを空にして、Heightを8くらいにして代用してるけど
507デフォルトの名無しさん:2006/07/21(金) 00:43:20
>>506
おお、こんな方法があったとは…
ありがとうございます!

もしかして、みんなこの方法でやってるのかな?
508デフォルトの名無しさん:2006/07/21(金) 01:10:01
>>507
GroupBoxで代用してたけど、調べたらこんなのあった
http://www.atmarkit.co.jp/fdotnet/dotnettips/310linecontrol/linecontrol.html

labelのborderで表現するみたいだね
509デフォルトの名無しさん:2006/07/21(金) 01:43:02
自作して再利用してる
大した手間じゃないし
510デフォルトの名無しさん:2006/07/21(金) 08:46:59
VC++のときはPictureBoxで代用してたけどC#ってできなかったっけ?
今自宅で開発環境ないからわかんない
511デフォルトの名無しさん:2006/07/21(金) 08:51:50
>>509が自作したのを公開してくれればいいんじゃないかな
512デフォルトの名無しさん:2006/07/21(金) 09:23:19
ユーザコントロールに線2本引くだけだろ
513287:2006/07/21(金) 09:59:17
視覚スタイルへの対応はどうでしょう?
514デフォルトの名無しさん:2006/07/21(金) 11:42:36
システムカラーで線描けばいいじゃない
515デフォルトの名無しさん:2006/07/21(金) 13:54:36
テキストのログファイルを作成するに当たって、ファイルを回帰的に使用したいと
考えています。
指定行にテキストを書き込む方法(メソッド)を教えてください。
516デフォルトの名無しさん:2006/07/21(金) 14:34:45
ない
517デフォルトの名無しさん:2006/07/21(金) 14:43:23
無いな
518デフォルトの名無しさん:2006/07/21(金) 15:39:45
>>515
ファイルポインタを指定行の先頭まで移動し、そこ以降を一旦メモリにバッファ
指定行の先頭から新しいテキストを書き込み、続けてバッファした内容を書き出す
以上をクラス化して再利用する
519デフォルトの名無しさん:2006/07/21(金) 15:56:22
普通は固定長にする。
520デフォルトの名無しさん:2006/07/21(金) 16:22:53
固定長にすると割り込みができるのか?
521デフォルトの名無しさん:2006/07/21(金) 18:39:59
初心者にもほどがある。
522デフォルトの名無しさん:2006/07/21(金) 19:58:54
>>520いったい何を言ってんだ?
523515:2006/07/21(金) 21:14:07
回答ありがとう御座いました。
VB6にあるようなPutステートメントがあるのかと思っていました。
524デフォルトの名無しさん:2006/07/22(土) 10:10:00
>>519
お前の会社なり脳内の流儀はさておき、彼はログファイルをローテーションさせたいわけだ。
525デフォルトの名無しさん:2006/07/22(土) 10:13:30
いや、そのために子低調にするのかと。
526デフォルトの名無しさん:2006/07/22(土) 12:38:29
>>524
普通>>515読んだら「サイクリック」だと思うわな。
527デフォルトの名無しさん:2006/07/22(土) 12:45:33
>>526
そら「周期的」に書き込むんだろうけど
528デフォルトの名無しさん:2006/07/22(土) 14:35:50
今時固定長にする利益を教えてください
529デフォルトの名無しさん:2006/07/22(土) 14:37:46
>>528
だから、サイクリックにできる。
530デフォルトの名無しさん:2006/07/22(土) 14:40:07
>>527
なんか勘違いしてないか
531デフォルトの名無しさん:2006/07/22(土) 18:09:09
同じファイルでサイクリックにしたいっていうから
それなら普通固定長にする
て言っただけなんだがなんかおかしかったか?
532デフォルトの名無しさん:2006/07/22(土) 18:13:02
逆に固定長にできないなら、
それでもわざわざ同じファイルにして苦労する
価値があるかはあやしい。
固定長以外ではシンプルな方法は無理だからね。
533デフォルトの名無しさん:2006/07/22(土) 18:52:50
サイクリックをlog rotationと間違えてる奴発見
534デフォルトの名無しさん:2006/07/22(土) 23:37:48
ここはサイキックなスレですね
535デフォルトの名無しさん:2006/07/23(日) 01:50:58
Regex.Replace( @"\abc\\def\\\ghi", "\\+", "\\" )
これで"\abc\def\ghi"が返ることを期待しているんだが
同じ文字列しか取得できない。なぜ?

536デフォルトの名無しさん:2006/07/23(日) 01:56:31
第二引数、C# 文法におけるエスケープと正規表現におけるエスケープの両方必要。
537デフォルトの名無しさん:2006/07/23(日) 09:34:22
>>536
回答ありがとう。
"\\+"ではなく"\\\\+"と指定しなきゃいけないのか。
第3引数は"\\"でいいのに。
538デフォルトの名無しさん:2006/07/23(日) 09:37:05
>>537
第三引数は正規表現じゃないですから。

/\\+/,"\\"
539デフォルトの名無しさん:2006/07/23(日) 09:52:37
>>538
なるほど。そういうこと。了解っす。
540デフォルトの名無しさん:2006/07/23(日) 18:51:30
TreeViewをプログラム上からスクロールさせたいのですがどうすればいいのでしょうか。
AutoScrollOffsetがそれらしいかと思って変更してみましたが変化がありませんでした。
541デフォルトの名無しさん:2006/07/23(日) 19:05:53
node.EnsureVisible()
542540:2006/07/24(月) 05:38:07
>>541
ピクセル単位でスクロールする方法はないでしょうか?
543デフォルトの名無しさん:2006/07/24(月) 09:45:32
VS2005を使用しています。コントロールの絶対座標を取得する方法はありますか?
544デフォルトの名無しさん:2006/07/24(月) 10:13:35
あります
545デフォルトの名無しさん:2006/07/24(月) 11:24:29
>>543
絶対の基準点はどれですか
以下は全て仕事で関わった「絶対座標」です
・ウィンドウ(視覚スタイルも考慮)
・クライアント領域
・デスクトップ(プライマリモニタの左上が基準点)
・特定のモニタの左上(マルチモニタを考慮)
・表示領域で最も左の上(マルチモニタを考慮)
・表示領域で最も上の左(マルチモニタを考慮)
・全モニタを合わせて矩形化した領域の左上
・上記のいずれかをベースとした任意の点
まあ、どれでも取れますが
546デフォルトの名無しさん:2006/07/24(月) 12:13:28
クライアント領域
547デフォルトの名無しさん:2006/07/24(月) 13:00:31
クライアント領域やウィンドウ領域の座標を取得するには? − @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/379getclientrect/getclientrect.html
548デフォルトの名無しさん:2006/07/24(月) 14:40:53
>>545
調子載ってないで全部書け。
549543:2006/07/24(月) 14:50:37
>>547で解決したのでいりません。
550デフォルトの名無しさん:2006/07/24(月) 15:51:24
if (s != ""){}
if (s != string.Empty){}
どっちを使った方がいいのかなぁ。
はどっちでも同じ?
551デフォルトの名無しさん:2006/07/24(月) 15:55:46
初期化のやり方にあわせれば?
552デフォルトの名無しさん:2006/07/24(月) 16:12:41
静的コード解析だと string.IsNullOrEmpty を使えって怒られるよね
553デフォルトの名無しさん:2006/07/24(月) 16:13:37
>>552
静的コード解析なんてあんの?知らなかった。
554デフォルトの名無しさん:2006/07/24(月) 17:29:14
if(s.length() != 0){}

555デフォルトの名無しさん:2006/07/24(月) 17:29:52
>>552
それおかしい。

NULLじゃこまるがemptyで。ってとき対応できない。
556デフォルトの名無しさん:2006/07/24(月) 18:44:36
>>554
Equals もそうだが s が null の時が怖い
557デフォルトの名無しさん:2006/07/24(月) 19:52:28
フォーム上のWMPコントロールで
ボリューム等が変更された場合それを知る方法はないでしょうか?

AxWindowsMediaPlayer.setting が変更されるタイミングが知りたいのですが・・・
558デフォルトの名無しさん:2006/07/24(月) 23:27:30
>>545
ちょびっとだけエスパーになって考えたら
デスクトップの左上を基準にした座標を言ってるんだと思う。

>>545もいじわるだが、
>>549がいたずらでなく本人ならちょっと笑える。いりません、って。
559デフォルトの名無しさん:2006/07/24(月) 23:34:44
>>543の質問は>>544が答えて既に解決したことなんだろ
560デフォルトの名無しさん:2006/07/25(火) 07:22:35
さすが夏休み。質問者も回答者も腐ってますね。
561デフォルトの名無しさん:2006/07/25(火) 07:35:06
学校でC#やってるトコなんてあるのかね
562デフォルトの名無しさん:2006/07/25(火) 08:31:55
あるよ
563540:2006/07/25(火) 08:32:46
無理なんですかね?
AutoScrollOffsetっていうのはなんなんでしょう?
564デフォルトの名無しさん:2006/07/25(火) 10:48:41
ピクセル単位は無理っぽいな
行単位ならできそうだが
565デフォルトの名無しさん:2006/07/25(火) 10:55:44
566デフォルトの名無しさん:2006/07/25(火) 18:39:44
>>563
AutoScrollOffset は MSDN2 に書いてるとおり。
スクロールは LVM_SCROLL を投げればいい。
SendMessage か派生クラスで WndProc の呼び出しかはお好みで。
567デフォルトの名無しさん:2006/07/25(火) 19:35:48
パネルとかにGraphicsとかDirect3D.Spriteで描画した後、
描かれたものをBitmap型の変数に移す方法ってありますか?
568デフォルトの名無しさん:2006/07/25(火) 19:58:23
逆に考えるんだ
Bitmap に描画するようにすればいいんだ
// D3D でできるかどうかは知らない
569550:2006/07/25(火) 21:38:26
なれてないので、ぱっと見は読みにくいけど、>>555に注意しながら
if (!string.IsNullOrEmpty(s)){}
を使うことにします。
>>552さん、ありがとうございました。
570デフォルトの名無しさん:2006/07/25(火) 22:52:12
なんかstaticメソッドだとStringと書きたくなる
Int32も同様
571デフォルトの名無しさん:2006/07/25(火) 23:02:59
>>570
分かる分かる
572540:2006/07/25(火) 23:27:59
>>566
なるほど。やはりその辺りをしなければならないのですね。
どうもありがとうございました。
573デフォルトの名無しさん:2006/07/26(水) 07:26:31
ボタンコントロールを動的に配置したのですが、ボタンクリック等イベントを作成できません
Button btn = new Button();
btn.Location = new Point(250,220);
this.Controls.Add(btn);
どうすればクリックイベント等を作成できるのでしょうか?
助けてください・・・
574デフォルトの名無しさん:2006/07/26(水) 07:48:28
MSDN でイベントとか調べればいいよ
あと InitializeComponent メソッドの中調べるとか
575デフォルトの名無しさん:2006/07/26(水) 08:35:46
>>573
OnClickとかのdelegateに代入すれば良し。
576デフォルトの名無しさん:2006/07/26(水) 17:20:17
string二次配列使っているんですが、どうにも分かりづらいのでスッキリ代用できるクラスはありますか?
各要素数は不定です。
577デフォルトの名無しさん:2006/07/26(水) 17:40:44
List<List<string>>とかは?
可能かどうかは知らん
578デフォルトの名無しさん:2006/07/26(水) 18:24:35
>>577
可能だよ

>>576
要素数不定ってことはジャグ配列?
579デフォルトの名無しさん:2006/07/26(水) 18:31:08
>>576
良いんちゃう?
580576:2006/07/26(水) 20:31:34
ジャグ配列でぐぐって自分が間違った宣言していることに気付きました。
string[,]でいいんですね。string[][]使ってました。
実際やりたかったことはListViewにアイテム追加するための表だったので
どっちが行でどっちが列なのかハッキリ分かればいいのになぁと思ってました。
情報後だし申し訳ない。
581デフォルトの名無しさん:2006/07/26(水) 22:28:23
ListView に追加するって目的がはっきりしてるんなら、端から ListViewItem[] 使えばいいような気がする
582デフォルトの名無しさん:2006/07/26(水) 22:33:18
んな単純なことだったらここで質問しないだろ


と思ったけどここ初心者スレだったな
584デフォルトの名無しさん:2006/07/26(水) 22:43:43
585デフォルトの名無しさん:2006/07/26(水) 23:46:03
句読点、書けない、バカを、サマージャンボする俺。
586デフォルトの名無しさん:2006/07/27(木) 00:19:11
あぼーん推奨
587573:2006/07/27(木) 00:42:41
コントロールの配列を作成し、イベントを取得する方法がやっとわかりましたorz
delegateを散々試してみて、delegateやInitializeComponent メソッドの中調べる方法は
大変な上に時間がかかりすぎる気がしたのでネット上でサンプルを漁り、以下のコードを発見しました
http://jeanne.wankuma.com/tips/control/arraycontrol.html

これで10x10マスのマインスイーパーに配置していた100個のボタンコントロールから開放されます(^O^)Vイエィ
>>574さん、>>575さん、ありがとうございましたm(__)m
588デフォルトの名無しさん:2006/07/27(木) 01:15:36
なんかデジャヴュ
589デフォルトの名無しさん:2006/07/27(木) 01:23:22
なんか、何度も似たようなものを見ることをデジャヴュとか言う奴いるけど、
全くの間違いだから。
590デフォルトの名無しさん:2006/07/27(木) 01:47:00
どう考えてもワザとだろ
591デフォルトの名無しさん:2006/07/27(木) 09:11:17
2ちゃんで誤用を見つけたらどっかのスレで生まれた文化と思った方が良い
「ふいんき(←なこかへんかえできない)」とか「おながいします」とか
592デフォルトの名無しさん:2006/07/27(木) 13:18:35
ちんちんおっきおっき
593デフォルトの名無しさん:2006/07/27(木) 13:54:49
>>589
普通にそのままの意味じゃない?
既視感だろ
594デフォルトの名無しさん:2006/07/27(木) 14:18:46
>>593
多分>>588は過去の投稿と同じことが繰り返された事をデジャビュと言ってる
本来のデジャビュは無かったことがあった事のように感じていること
だから微妙に違う

でも2ちゃんだからどうでもいい
595デフォルトの名無しさん:2006/07/27(木) 14:46:13
くだらねぇ
596デフォルトの名無しさん:2006/07/27(木) 15:23:38
2ちゃんらしい流れだ
597デフォルトの名無しさん :2006/07/27(木) 15:34:22
.Net 2.0 の serialport クラスの
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
c = serialPort1.Read(r, 0, 32);
}
の終了はメインスレッドでどうやって待つ方法がいいでしょうか?
598デフォルトの名無しさん:2006/07/27(木) 16:09:48
本来のデジャビュはフランス語で「もう見た」という意味なので
「無かったことがあった事のように感じている」という訳ではない
599デフォルトの名無しさん:2006/07/27(木) 16:16:26
キスしてグッバイ☆
ありとあらゆるもの♪
600デフォルトの名無しさん:2006/07/27(木) 16:47:51
>>598
慣用句であるため直訳とは意味が違う

既視感 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B8%E3%83%A3%E3%83%93%E3%83%A5
> 既視感(きしかん)は、一度も体験したことがないのに、すでにどこかで体験したように感じたり、過去に夢などで見たように記憶錯誤すること。
601デフォルトの名無しさん:2006/07/27(木) 17:03:24
で、お前らいつまでこの馬鹿話引きずるんだ?
602デフォルトの名無しさん:2006/07/27(木) 17:12:19
.netが死滅するまで
603デフォルトの名無しさん:2006/07/27(木) 17:13:35
次のネタふられるまで
604デフォルトの名無しさん:2006/07/27(木) 17:14:28
じゃあ次は確信犯の誤用な
605デフォルトの名無しさん:2006/07/27(木) 17:15:16
>>604 は確信犯的なレスをした
606デフォルトの名無しさん:2006/07/27(木) 18:19:34
>>605 は確信犯的なレスをした
607デフォルトの名無しさん:2006/07/27(木) 18:42:17
デリゲートで質問なのですが、
自己定義したイベントハンドラに += で2つ以上のメソッドを登録したあと
BeginInvoke() を実行すると System.ArgumentException が出るんです。
BeginInvoke() を利用したい理由は、登録したメソッドの戻り値を1つ1つ判定したい為です。
通常だと最後のメソッドの戻り値で上書きされるため、BeginとEndInvoke
を使ってみたのですが、まったくうまくいきません。

アドバイスや解説ページなどありましたら、どうかよろしくお願いします。
608デフォルトの名無しさん:2006/07/27(木) 18:47:36
>>607
今は確信犯の誤用について語り合うのに忙しいから帰ってくれ
609デフォルトの名無しさん:2006/07/27(木) 19:12:39
デリケートな質問かと思ったよ
610デフォルトの名無しさん:2006/07/27(木) 19:13:04
>>609
アホか
611デフォルトの名無しさん:2006/07/27(木) 19:16:08
流れ読めなくてすみませんでした。
とりあえず、GetInvocationList()を使い、目的である1つ1つの
戻り値判定はできました。
でもなんか、力業っぽいというか、、もっと勉強して調べたいと思います。
失礼しました。
612デフォルトの名無しさん:2006/07/27(木) 21:30:41
つかイベントで返値使うな、と言うのが MS のガイドライン。
呼び出し元に情報を伝えたい時は EventArgs を派生させたクラスで。
613デフォルトの名無しさん:2006/07/27(木) 22:52:51
イベントハンドラでないデリゲートならOK
614607:2006/07/27(木) 23:51:38
はじめはデイゲートインスタンス?を利用していたのですが、
メソッドの削除がちょっとうまく行かなかった為 event にしてみたんです。

delegate bool CheckDelegate( object value );
public class Sampel {
CheckDelegate checkDelegate;
public Remove( CheckDelegate check ) {
this.checkDelegate -= new CheckDelegate( check ); // ※1
}
※1で削除できなかったので event にしてみました。
インスタンス?が違うっぽいですから削除できないのは納得してました。
とくにメソッドの削除使う予定はないのですが。
単にデリゲートよいいいかな?と思って 簡単な event 使ってました。
もうちょっといろいろ読んで勉強していきます。
>>612-613さんご指導ありがとうございました。
615デフォルトの名無しさん:2006/07/28(金) 00:43:20
>>614
> public Remove( CheckDelegate check ) {
>  this.checkDelegate -= new CheckDelegate( check ); // ※1
> }

うむ、全く意味不明なコードに仕上がってるな。
右辺は += のときと同じになるぜ?
+= のときの右辺はどうしてるよ。
616デフォルトの名無しさん:2006/07/28(金) 00:56:19
>>615さんこんばんは。
あれ?Addの場合は、Removeと同じく、
public Add( CheckDelegate check ) {
this.chekDelegate += new CheckDelegate( check );
}
です。※Remove の"-"が"+"になっただけです。
これでテスト動いてたのでいいと思ってたのですが。
もしよかったらご指摘お願いします。
617デフォルトの名無しさん:2006/07/28(金) 02:45:13
delegateを勉強するよろし

delegate void UnkoDelegate( string str );

void UnkoTest()
{
 UnkoDelegate unko, unko2;

 unko = new UnkoDelegate( aho );
 unko2 = new UnkoDelegate( aho );
 unko -= unko2;
 unko += unko2;
 unko( "aho" );
}


void aho( string str )
{
 MessageBox.Show( str );
}





618デフォルトの名無しさん:2006/07/28(金) 12:09:43
イベントでずっと new してたので、意味もなく new が慣習になってました・・・
デリゲートというより、当たり前の事ですよね。インスタンス違うんだもん。
間抜けでした。 失礼しました。
619デフォルトの名無しさん:2006/07/29(土) 08:37:27
new でも問題ない
620デフォルトの名無しさん:2006/07/29(土) 14:00:59
質問です。
トラックバーを利用してシステムの音量を調整するのには
どうしたらいいですか?
また、音量の値も取得したいのですが…
621デフォルトの名無しさん:2006/07/29(土) 14:01:37
すいません、ageてしまいました orz
622デフォルトの名無しさん:2006/07/29(土) 14:09:15
別にsage必須スレじゃない
623デフォルトの名無しさん:2006/07/29(土) 14:16:19
Win32API を使う必要がある。
ttp://www.google.com/search?hl=ja&lr=lang_ja&oe=utf8&q=API+%E9%9F%B3%E9%87%8F
トラックバー自体は別にいいよな?
624デフォルトの名無しさん:2006/07/29(土) 20:24:12
デリゲートは対象のインスタンスとメソッドが同じなら同じ扱い。
625デフォルトの名無しさん:2006/07/29(土) 23:54:12
>>623
ありがとうございます。
Win32API使ったこと無いのでちょっと苦しそうですが
がんばってみます。
626デフォルトの名無しさん:2006/07/29(土) 23:55:46
専ブラ使ってるのに何で設定が保存されないのだろう orz
627デフォルトの名無しさん:2006/07/30(日) 16:55:00
初心者の俺が実況用のブラウザ作る!1!!11!
http://ex16.2ch.net/test/read.cgi/news4vip/1154167137/
まとめ
http://vanbl.blog.shinobi.jp/


現在新しい専ブラを開発中ですプログラミングに詳しい方
>>1にアドバイスをお願いします
628デフォルトの名無しさん:2006/07/30(日) 22:20:24
>>627
live2chってのがとっくの昔にあるぞ。
629デフォルトの名無しさん:2006/07/30(日) 22:49:54
live2ch は VB だったと思うが、最近変わったのか?
630デフォルトの名無しさん:2006/07/30(日) 22:50:32
>>629
言語なんぞ些細なことで重要なのは要求する仕事をしてくれるソフトウェアです。
631デフォルトの名無しさん:2006/07/31(月) 00:00:50
live2chはVBだよ、何が悪いの?
632デフォルトの名無しさん:2006/07/31(月) 00:12:34
ちょっとお聞きしたい。
親子のフォームを作って、子でパラメータをいじれるようにして
親で子のパラメータをリアルタイムに反映させるようにするには
どうするのが一番良いのでしょう?

親でstatic変数で管理?
子のイベントを親のクラスで作る?
その他?

C#が独学なんで、作ってて迷いが出てるんですよ
助言お願いします。
633デフォルトの名無しさん:2006/07/31(月) 00:17:39
んん、要するに子にスライドバー置いて親に表示してる画像の拡大率変更、とかそんなんか。

イベント。
だが子のイベントを親のクラスで作るってのは意味不明。
子のイベントに親がイベントハンドラを登録する、だな。
634デフォルトの名無しさん:2006/07/31(月) 00:43:44
プロパティでもイベントでもSendMessageでも。
やるとしたらイベントかな。
635デフォルトの名無しさん:2006/07/31(月) 00:51:18
この場合、親は子の存在を知るべきか?子は親の存在を知るべきか?で話は違ってくる。
自分の理想では、親に子ウィンドウをインジェクション注入、子にはパラメータ変更時に呼び出すべき親のメソッドをデリゲートとして登録しておく。
これで、両者ともお互いの存在を知ることがない。
636デフォルトの名無しさん:2006/07/31(月) 11:05:19
こんにちは。

stringの配列をプロパティにしたいのだけど、書き方がわかりません。
普通の変数であれば、わかります。
mohe.property[1] <= こんなふうにアクセスしたいです。

書き方を教えてくださいな。
637デフォルトの名無しさん:2006/07/31(月) 11:55:41
できるんだっけ?
638デフォルトの名無しさん:2006/07/31(月) 12:03:12
意味不明
639デフォルトの名無しさん:2006/07/31(月) 12:07:30
>>636
string[] _aho = new string[30];
string[] Aho { get { return _aho; } }
640デフォルトの名無しさん:2006/07/31(月) 12:49:17
>>639
ありがとう。むつかしく考えてたよ。
アホだ…。
641デフォルトの名無しさん:2006/07/31(月) 12:53:46
え、まじでそういう話だったのか
642デフォルトの名無しさん:2006/07/31(月) 14:53:59
質問です。

指定したアプリにVK_F1とかを送りたいです。
SetForegroundWindowしてからkeybd_eventで送れたことは送れたんですが、
タイミング?によってはうまく動きません。
(GetForegroundWindowで確認してからkeybd_eventをしてるのに)

代わりにPostKeybdMessageでアプリを直接指定して送りたいのですが、
FindWindowでとったハンドルを指定してもそこに送れてないし、
ハンドルを-1にしても、ASCII文字しか送れていないようです。

文字ではなくF1とかの仮想キーを、指定したアプリに送ることって出来ますか?
643デフォルトの名無しさん:2006/07/31(月) 14:58:59
普通にSendMessageでWM_KEYDOWNじゃだめなのか?
フォアグラウンドなんて関係ないっしょ
644デフォルトの名無しさん:2006/07/31(月) 15:01:14
>642
http://pc8.2ch.net/test/read.cgi/tech/1153537081/287-
この人犯罪者です><
645デフォルトの名無しさん:2006/07/31(月) 15:03:04
どこがC#の質問かと
百歩譲ってどこが.NETの質問かと

Win32APIスレで聞け
646642:2006/07/31(月) 15:16:41
>643
なるほど、やってみます
まだググって片っ端から試してみてる程度のレベルなので・・・

>644
うへ、これは別人ですけど
このタイミングじゃどう思われても仕方ないですね・・・orz

>645
コード自体はC#で書いてますけど、
改めてカキコ見直してみたら、確かにC#も何も関係ないですね
スレ違い申し訳ない
647デフォルトの名無しさん:2006/07/31(月) 15:23:20
キー送りたいという質問自体はよくあること
648デフォルトの名無しさん:2006/07/31(月) 15:48:24
俺もよくやること
649デフォルトの名無しさん:2006/07/31(月) 16:02:18
>>641
俺もそう思った。
>>637がハードルを上げて難しく考えてしまった。
650デフォルトの名無しさん:2006/07/31(月) 23:36:57
ダサいよなぁ。
651632:2006/08/01(火) 02:01:02
>>633-635
お答えありがとうございます。
なるほど、イベント登録がデフォなんですね。
子フォームにコントロールを追加していくと
勝手にイベントが追加されるのに、さらに
書かないと行けないのはめんどくさいなぁ・・・
652デフォルトの名無しさん:2006/08/01(火) 14:46:38
http://sewig.jp/diary/?date=20060624
↑のコードを元に以下のようなコードを書いたのですが、
unsafe public void Wave_generation(double f)
{
try
{
short* wave_data = stackalloc short[44100];
double dr = 2 * Math.PI / (44100.0 / f);
for (int t = 0; t < 11025; t++)
{
*(wave_data + t) = (short)(Math.Sin(dr * t) * 32767);
}

        (中略)

wt.dwFlags = 1;
wt.dwLoops = 1;
wt.dwBytesRecorded = 0;
wt.dwUser = 0;
wt.lpNext = null;
wt.reserved = 0;

windows.waveOutPrepareHeader(hWOut, &wt, (uint)sizeof(wavehdr_tag));
windows.waveOutWrite(hWOut, &wt, (uint)sizeof(wavehdr_tag));
Thread.Sleep(300);
windows.waveOutClose(hWOut);
}
catch { }
}
このコードを連続実行するとtry〜catchで括っているにもかかわらず、何も言わずに
プログラム本体が落ちてしまいます。
これを回避するにはどうしたらいいでしょうか?
653デフォルトの名無しさん:2006/08/01(火) 15:26:41
>>652
[ツッコミを入れる]
ツッコミ・コメントがあればどうぞ! E-mailアドレスは公開されません。

交流してやれよ
654デフォルトの名無しさん:2006/08/01(火) 19:54:17
自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、
キャプチャしているコントロールを取得するにはどうしたらよいのでしょうか?
655デフォルトの名無しさん:2006/08/01(火) 20:08:49
MSDNライブラリの「Control.Capture プロパティ」の使用例のところにあるけど
656デフォルトの名無しさん:2006/08/01(火) 20:11:07
>自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、

本当か?
657654:2006/08/01(火) 20:24:34
>>655
使用例は「特定のコントロールがキャプチャしたとき」を判断するサンプルですよね。

>>656
失礼しました。Control.Captureプロパティを true に設定する、と言いたかったのです。
658デフォルトの名無しさん:2006/08/02(水) 10:18:36
Control.Captureプロパティは読み込み専用ジャマイカ。
659654:2006/08/02(水) 18:56:42
>>658
いえ、そんなことはないはずです。

どうも無理なのですかね。
あきらめてP/Invokeでやることにします。
660デフォルトの名無しさん:2006/08/02(水) 20:13:06
Form から Controls を再帰的に探していけば見つかりそうだが。
661デフォルトの名無しさん:2006/08/02(水) 22:43:27
object obj = 1;

int i = (int)obj;

これは成功するのに

IntPtr p = (IntPtr)obj;

だと例外でるのはなんで?

IntPtr p = (IntPtr)(int)obj;

ってしなきゃいけないの?
662デフォルトの名無しさん:2006/08/02(水) 22:50:44
数値リテラルは明示しなかった場合 int
IntPtr じゃなくて long でも InvalidCastException だぜ
663デフォルトの名無しさん:2006/08/02(水) 23:00:59
664デフォルトの名無しさん:2006/08/02(水) 23:07:18
>>662
>>663
ありがとう

>互換性のない値型への参照をボックス化解除しようとすると、
>InvalidCastException が発生します。

ってことは、int と IntPtr は「互換性のない値型」ってこと?
(IntPtr)i
はできるのに?
665デフォルトの名無しさん:2006/08/02(水) 23:10:49
>>664
だってObjectの中身が具体的に何かなんて知ったこっちゃないし。
666デフォルトの名無しさん:2006/08/02(水) 23:14:15
IntPtr は Int32 からの型変換は定義してるけど Object からの型変換は定義していない
667デフォルトの名無しさん:2006/08/02(水) 23:17:09
>>665
>>666
なっとくしました。
初心者のアホな質問につきあってくれてありがとう。
668デフォルトの名無しさん:2006/08/04(金) 14:15:10
[Category("カテゴリ名")]のカテゴリ名一覧が知りたいんですが、どこかに載ってませんか?
669デフォルトの名無しさん:2006/08/04(金) 15:20:59
ヘルプに載ってね?
670デフォルトの名無しさん:2006/08/04(金) 15:26:36
671668:2006/08/04(金) 15:30:38
探したりなかったようで申し訳ない。>>670thx
672デフォルトの名無しさん:2006/08/08(火) 17:42:46
C#で日付の差分をとる方法を教えてください。
VBでいうdatediffのようなものです。

宜しくお願いします。
673デフォルトの名無しさん:2006/08/08(火) 17:53:33
TimeSpan span = date2 - date1;
674デフォルトの名無しさん:2006/08/08(火) 18:21:31
>>673
あ、ありがとうございまふ。
675デフォルトの名無しさん:2006/08/08(火) 18:52:49
>>672
C#にそういう機能はない
.NET Frameworkを使うしかない
676デフォルトの名無しさん:2006/08/08(火) 19:07:30

   ∧_∧    / ̄ ̄ ̄ ̄ ̄
    (ω・ )ゝ < なんだって?
  ノ/  /     \_____
  ノ ̄ゝ
677デフォルトの名無しさん:2006/08/08(火) 19:21:25
.NET FrameworkもC#で実装されてる
678デフォルトの名無しさん:2006/08/08(火) 19:43:43
 ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;  
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;; 
  ヾ;;;ハ    ノ       .::!lリ;;r゙
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f.   俺にもありました
   ~''戈ヽ   `二´    r'´:::. `!
679デフォルトの名無しさん:2006/08/09(水) 11:24:26
>>675
VB6スレから出張ご苦労様です
680デフォルトの名無しさん:2006/08/10(木) 07:55:54
ボクはVBer♪
681デフォルトの名無しさん:2006/08/11(金) 02:48:31
axWindowsMediaPlayerを使ったプログラムを組んでいるのですが、
再生が終了したのを検出するにはどうしたらよいでしょうか?
EndOfStreamイベントで検出出来るかどうか試したのですが、
検出できませんでした。

よろしくお願いします。
682デフォルトの名無しさん:2006/08/11(金) 08:22:25
>>681
WMPPlayState.wmppsMediaEnded
683デフォルトの名無しさん:2006/08/11(金) 13:31:51
>>682
うまく検出できました。
ありがとうございました。
684デフォルトの名無しさん:2006/08/13(日) 12:18:25
ものっすごい見当違いな質問かもしれません。
Form1.csのイベントハンドラから、外部クラスのmethodに値を渡し、
そのmethod内で処理した結果をReturnで返すようにしているのですが、
それを受け取ってみてもフォームに反映されないのです。(正確には、反映はされる事があっても、その方法ではGUIがフリーズしてしまう)
外部クラスのmethodというのは、接続先とPortを渡されたら、TcpClientで接続し、ストリームから通信結果を受け取って、
stringとして格納していき、それをReturnするものです。

スレッドを使ってみたり、デリゲートを利用してみたり、backGroundWorkerを触ってみたりしたのですが、
どれも既にあるクラスをそのまま利用するというわけにはいかず、外部クラス内に手を入れなければいけないような感じですし…
おそらく根本的に考えかたというか、GUIプログラミングの定石のようなものが理解出来てないせいだと思うのですが、
なかなか取っ掛かりが見えてきません…。
呼ばれたら一連の動作を実行して結果を返し、その結果をForm1.cs側で受け取ってUIに反映させるという流れで間違ってますでしょうか?
685デフォルトの名無しさん:2006/08/13(日) 12:25:37
>>684
その方法で良いともうけど、なにが出来ていないのかよく分からない。
とりあえず、returnは止めて、Form1にstringを受け取れるフィールドとプロパティを作って、
そちらに送って、Form1で処理してみては?
686デフォルトの名無しさん:2006/08/13(日) 12:29:31
要するにそのメソッドは同期的にある程度長い時間を食うものであると。
同期的なら当然そのメソッドを処理しているあいだ他の事ができないわけで、
この他の事というのに画面の再描画とかも含まれるから応答無しになるわけだな。
で、それを回避するには当然何らかの手法で別スレッドで処理させる必要がある。
.NET 2.0 なら BackgroundWorker だな。

で、何が分からないんだ?
687デフォルトの名無しさん:2006/08/13(日) 12:30:12
>>686
普通にdelegateの非同期実行でええやん。
688デフォルトの名無しさん:2006/08/13(日) 12:32:08
>>687
初心者は絶対 GUI とのやりとりでハマる。
689デフォルトの名無しさん:2006/08/13(日) 12:32:22
逆にスレッドを使ってるせいでハングアップしてるんじゃないのかな?
GUIを管理しているスレッド以外からはGUIの更新は直接は出来ない。Control.Invoke メソッドを参照。
690デフォルトの名無しさん:2006/08/13(日) 12:33:28
>>688
はいはい、3組のパソコン博士君にはかなわないよ。
691デフォルトの名無しさん:2006/08/13(日) 12:34:30
>>689
だったら例外出ます。
692デフォルトの名無しさん:2006/08/13(日) 12:36:30
>>686,687
BackgroundWorker使ってみたと書いてあるやん。
693デフォルトの名無しさん:2006/08/13(日) 12:37:23
デバックなら例外でるけど、
リリースバージョンならでないんじなかったっけ?
694デフォルトの名無しさん:2006/08/13(日) 12:39:06
>>684
そのプログラムをどっかのアップローダに上げてみた方が解決は早いと思うよ。
695デフォルトの名無しさん:2006/08/13(日) 12:40:16
>>685-686
そこまでが正しい考え方であるということは…。
別スレッドで処理した結果の受け取り方が鬼門になっていると言う事になるのですかね…多分ですが。
backGroundWorkerが一番手軽そうでしたので、それを例にして。
例えば、
string log;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
  Class1 cs1 = new Class1();
  log += cs1.connect();
}
のようにDoWorkで外部クラスのメソッドを呼んで、結果をForm1.cs(public partial class Form1 : Form)の、
string log;に入れるようにして、
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
  richTextBox1.Text += log;
}
という感じでスレッド側での処理が終わった時に通信結果を表示したいのですが、一向にフォームが書き換わる気配が無く…。
696デフォルトの名無しさん:2006/08/13(日) 12:41:59
フォーム云々以前に値は帰って来てるのかい?
697デフォルトの名無しさん:2006/08/13(日) 12:48:55
>>696
それがどうも、ブレークポイントを log += cs1.connect();の場所に仕掛けてみても、当然のようにlogはまだ何も入っていない状態で、
さらに、backgroundWorker1_RunWorkerCompletedのrichTextBox1.Text = log;にもブレークポイントを仕掛けてみたのですが
そちらは引っ掛かりもせずです。
698デフォルトの名無しさん:2006/08/13(日) 12:54:17
ブレークポイントいれるなら
log += cs1.connect();の次の行か閉じ括弧に。
それでブレークしないなら
connect()でそっちのスレッドから返ってきてないんじゃ
699デフォルトの名無しさん:2006/08/13(日) 12:56:55
まずシングルスレッドで Connect メソッドが成功するのかどうかから確認した方が良い気がする
700デフォルトの名無しさん:2006/08/14(月) 12:30:49
日付型から和暦の年を最低1桁で取り出そうと思っています
しかしこのコードだと1桁の和暦ではなく、例えば「平成 9年6月」という文字列が返ってきます
この中の 9 という値だけが欲しいのですが、どうすればいいのでしょうか

CultureInfo culture = new CultureInfo("ja-JP", true);
culture.DateTimeFormat.Calendar = new JapaneseCalendar();
Label2.Text = date.ToString("y", culture);

string.Format(culture, "{0:y}", date) でもだめでした

ご存知の方教えてください
701デフォルトの名無しさん:2006/08/14(月) 12:39:08
DION規制に引っ掛かってしまってレスが返せませんでした…orz

で、>>698氏の通りにブレークポイント位置を変えてみたら、
どうやら、DoWorkのlog += cs1.connect();で、logにはちゃんと結果が入ってる事が確認できました!
このブレークポイントの掛け方を知る事ができただけでも、かなり感謝です。

しかし、RunWorkerCompletedの方は、閉じ括弧のブレークポイントですら引っ掛からないので、
こちらは恐らく、使い方そのものがまずい悪寒。IRC等のチャットアプリケーション(通信を常に開いているようなもの)では、
TCPClientでの通信は避けて、Socketで非同期に通信するべきですかね…。
なにはともあれ、ありがとう御座いました。もすこし色々やってみます。
702デフォルトの名無しさん:2006/08/14(月) 13:05:18
>>700
JapaneseCalendar cal = new JapaneseCalendar();
Label2.Text = cal.GetYear(date).ToString();

ちなみに書式指定は"%y"
703デフォルトの名無しさん:2006/08/15(火) 13:50:55
IpcChannel を使ったアプリを WindowsMe で動かそうとすると
PlatformNotSupportedException が出ます。
Me では使えないんでしょうか。
704デフォルトの名無しさん:2006/08/16(水) 10:33:32
C#相談室から誘導されてきました

リストビューからIEのお気に入りのショートカット(.url)をクリックして
axWebBrowser1に表示させたいのですが、「ファイルのダウンロード-セキュリティの警告」
という画面が出て直接表示されません。
「開く」を押すと新しいIEが開いてそこに表示されてしまいます。
これをセキュリティ警告を出さず、直接表示させるにはどのようにすれば良いでしょうか。

お願いします。
705デフォルトの名無しさん:2006/08/16(水) 10:36:17
>>704
URLファイルからURLを取ってきてWebBrowserのNavigateに放り込めいいじゃない
706デフォルトの名無しさん:2006/08/16(水) 10:44:55
>>704
urlファイルからどうやってリンク先を取得してんの?
C#からやると結構面倒だけど。
ShellLinkObjectクラスとIShellLinkWインターフェイス実装してるの?
それともShell32を参照に追加?
707デフォルトの名無しさん:2006/08/16(水) 10:53:26
urlファイルの中身は単なるiniファイルですが何か
708デフォルトの名無しさん:2006/08/16(水) 10:57:27
知らんかった
709704:2006/08/16(水) 11:06:40
>>705-708
ありがとうございます。

>>705
URLの取り方はStreamReaderでurlファイルから読み込めばいいのでしょうか?
それとも日付とかサイズ取得するみたいになんか簡単に取得できるのかな

>>706
リンク先の取得をせずに直接ショートカット(URLファイル)にアクセスしています
710デフォルトの名無しさん:2006/08/16(水) 16:55:09
>>709
url ファイル (下のは2chへのリンク) の中身をダンプするとこんな感じ (>>707の通り単なる ini ファイル)

[InternetShortcut]
URL=http://2ch.net/
Modified=606955AF07C1C6015C

// だからかなり処理を省くとこんな感じのコードで読める。 (全角スペース → タブ / 未テスト)
StreamReader reader = new StreamReader("link.url");
string url = null;
string line;
while ((line = reader.ReadLine()) != null)
{
 if (line.StartsWith("URL="))
 {
  url = line.Substring(4);
  break;
 }
}

もちろんWin32API を使って ini を読むのもアリ。
# http://www.microsoft.com/japan/msdn/vbasic/migration/tips/INIfile.aspx
711デフォルトの名無しさん:2006/08/16(水) 17:47:16
Componentクラスの上にSqlConnectionとか置いておいたら
ComponentクラスがDisposeされるときにに一緒にDisposeされる
もんだと思ってたんだけど違うようだと気付いた
あれは一個一個if (this.sqlConnection1 != null)sqlConnection1.Dispose
みたいにやっていかないといけないの?
712デフォルトの名無しさん:2006/08/16(水) 18:26:43
>>711
君がComponentクラスと呼んでるものが、
> System.ComponentModel.IContainer components = new System.ComponentModel.Container();
これのContainerクラスのことなら、これにAddされたコンポーネントは
componentsをDisposeすれば連鎖的にDisposeされる。個別にDisposeする必要はない。
713デフォルトの名無しさん:2006/08/16(水) 21:08:22
>>710
横からですが、この
Modified=606955AF07C1C6015C
ってのはどういう値なんでしょうか?
714デフォルトの名無しさん:2006/08/16(水) 21:09:35
>>713
epocのミリ秒版とかそんなんでしょう。
715704:2006/08/17(木) 02:17:21
>>710さんのソースでやりたいことができました。ありがとうございます。
あとでWin32APIを使った方法も試してみたいと思います。
ありがとう。
716デフォルトの名無しさん:2006/08/17(木) 19:41:00
717デフォルトの名無しさん:2006/08/17(木) 21:13:02
C#相談室で回答を貰えなかったのでこちらでも質問させてください。

DataGridViewで列毎にCharacterCasingを設定することは可能なのでしょうか?
可能なら設定の仕方を教えてください
718デフォルトの名無しさん:2006/08/17(木) 21:16:47
>>716
ぅぉ-ありがとう。
なぜにMSのサイトに載ってないんだろ。
719デフォルトの名無しさん:2006/08/17(木) 21:21:47
>>717
向こうで質問取り消してから来いよカス
720デフォルトの名無しさん:2006/08/17(木) 21:27:48
>>719
うるせーバカ
わかんねんだろ?

もうどうでもいいよ!
721デフォルトの名無しさん:2006/08/17(木) 21:35:15
プログラム初心者です。
C#相談室でこちらに行けといわれました。。。
掲示板の質問も取り消せないほどの初心者です。

WinCEでプログラムを走らせているのですが、
その時の文字のエンコードをUnicodeに変更しなくてはいけません。
Shift_JISからの変更だったので下のようなプログラムを書いて見ました。


StringBuilder _DataArry;
string DataArry = _DataArry.Tostring();

byte[] test = Encoding.Unicode.GetBytes(DataArry);
DataArry = Encoding.Unicode.Getstring(test);

しかし、ビルドをすると
引数を'1'個指定できる、メソッド'GetString'のオーバーロードはありません。
とエラーが出てしまいます。

すみませんが、どなたか教えていただけませんか?
722デフォルトの名無しさん:2006/08/17(木) 21:44:22
723デフォルトの名無しさん:2006/08/17(木) 21:46:16
>>721
なぜコンパイルエラーが出るかといえば、
GetstringがVirtualだから。

やるとするなら
UnicodeEncoding unicode = new UnicodeEncoding();
unicode.GetString(buffer);

だけどそのコード意味ないよ。
724デフォルトの名無しさん:2006/08/17(木) 21:49:28
# >>721じゃないけど。
>>721 を補足すると、
Encoding.GetString(byte[]) はWinCEじゃサポートされてないから、
Encoding.GetString(byte[], int, int) を使えって話ね。

この場合は、
Encoding.Unicode.GetString(test, 0, test.Length);
かな。ただsjis からだと前の行も
byte[] test = (new Encoding(932)).GetBytes(DataArry);
って変更が必要。
725デフォルトの名無しさん:2006/08/17(木) 21:50:42
もっと単純な話じゃないの?
>.NET Compact Framework によってサポートされています。 
と書いてあるのはこの書式だけ。
>Encoding.GetString (Byte[], Int32, Int32) 
726724:2006/08/17(木) 21:51:05
間違えた。こっちか。
byte[] test = Encoding.GetEncoding(932).GetBytes(DataArry);
727デフォルトの名無しさん:2006/08/17(木) 23:16:44
>>712
いや、単にSystem.ComponentModel.Componentを継承しただけのクラスです
(メニューの「コンポーネントの作成」で作られるやつ)
なんかデザイナ上でSqlConnectionとか貼れるから、Disposeまで自動で
してくれるのかと思ったんだけど、実際Disposedイベントを監視してみると
自動ではDisposeされない、と最近知ったという、だめぽな俺。
よく見るとSqlConnectionのコンストラクタにIContainerを受け取るのが無いし。

728デフォルトの名無しさん:2006/08/18(金) 16:12:39
自分で全部IContainerにAddしとけば?
Disposing(bool)をオーバーライドしてまとめてDispose
729デフォルトの名無しさん:2006/08/18(金) 17:05:15
Form1のDataGridViewをダブルクリックした時に
Form2を開きDataGridの選択された行の内容をTextBoxに表示したいのですが

TextBoxに表示する方法がわかりません
どうすればいいのでしょうか?
730デフォルトの名無しさん:2006/08/18(金) 17:10:11
DataGridView dgView=new DataGridView();
TextBox tb=new TextBox();
tb.Text=dgView.ToString();
731デフォルトの名無しさん:2006/08/18(金) 17:34:33
DataGridViewをpublicにするなり
Form1にpublic staticなフィールドもってそこにいれておくなり
Form1にプロパティつくってForm2で読むなり
Form2のコンストラクタに行の内容渡すなり

お好きな方法でどうぞ
732デフォルトの名無しさん:2006/08/19(土) 11:43:02
>>731
それのやり方がわからないので聞いたのですが?

どの方法かわかりませんが自己解決しました
ここは役に立たないインターネットですねw
733デフォルトの名無しさん:2006/08/19(土) 11:45:15
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーた始まった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
734デフォルトの名無しさん:2006/08/19(土) 11:50:27
「何となくだけどできちゃった。俺SUGEEEEE!!!」 は解決したとはいわない。
っていうかぶっちゃけ危険分子。
735デフォルトの名無しさん:2006/08/19(土) 11:54:18
>>734
そういうことばっかり言って・・・
ちゃんと教えてくれないくせに・・・

本当に意地悪っ子だね・・・
736デフォルトの名無しさん:2006/08/19(土) 11:56:01
×役に立たない
○レベルが高すぎて理解できない
737デフォルトの名無しさん:2006/08/19(土) 12:02:17
用はソースコードを示さないと理解できないんだろうが、
情報が与えられていない以上あれ以上の教え方ができるやつはどこに行ってもいない
738デフォルトの名無しさん:2006/08/19(土) 12:03:17
publicとstaticの説明からはじめろってことだろw
739デフォルトの名無しさん:2006/08/19(土) 12:15:30
>>737
そうそう。コードないとわからないのよ。

で、あれ以上の教え方を得るためにはどのような情報を与えてやればいいんだ?

しっかし、質問しても人湧いてこないのに
少し煽るとわらわら湧いてくるんだなw
740デフォルトの名無しさん:2006/08/19(土) 12:18:00
>>739
環境からやりたいことからプロジェクト名か何から何まで
思いつくもの全部書け
それでたりなかったら無理。あきらめろ。どこいってもだめ
741デフォルトの名無しさん:2006/08/19(土) 12:18:59
ちなみに女子高生です
742デフォルトの名無しさん:2006/08/19(土) 12:29:58
>>741
悪いな女子中学生しか興味ない
743デフォルトの名無しさん:2006/08/19(土) 12:31:08
俺は年齢一桁が専門です
744デフォルトの名無しさん:2006/08/19(土) 12:33:44
うわっ、キモ
745デフォルトの名無しさん:2006/08/19(土) 12:39:44
ちなみにすぐ下の妹が女子中学生で、一番下の妹が年齢一桁です
746デフォルトの名無しさん:2006/08/19(土) 12:40:52
住民票うp
747デフォルトの名無しさん:2006/08/19(土) 12:43:13
>>739
必要な情報はあれだけで十分。あとは理解しなさい。

個人的には public string プロパティを Form2 に作るが。
それともプロパティの作り方から教えなきゃダメか?
748デフォルトの名無しさん:2006/08/19(土) 12:44:49
>>747
そういう方法じゃなくて答えをもらわないといけないんだと

プロぐれマートしてはさいくあのにんげん
749デフォルトの名無しさん:2006/08/19(土) 12:47:10
プロパティってなんですか?
750デフォルトの名無しさん:2006/08/19(土) 12:51:55
>>747
いや、その方法で自己解決したので結構です
751デフォルトの名無しさん:2006/08/19(土) 12:57:00
>>748
日本語でおk
752デフォルトの名無しさん:2006/08/19(土) 13:06:56
こういう流れのときはこの板にIDがあったらといつも思う
753デフォルトの名無しさん:2006/08/19(土) 13:24:29
おまんこ
754デフォルトの名無しさん:2006/08/19(土) 19:47:57
MSDataSetGeneratorを用いて
<DataSet>
<Table1>
 <name></name>

</DataSet>
755754:2006/08/19(土) 19:52:14
ごめん間違えた、MSDataSetGeneratorで、
入れ子になったDataTableを作りたいんですがどうすればいいのでしょう?

<dataSet>
<table1>
 <name></name>
 <tables>
  <table2>
   <data></data>
  </table2>
 </tables>
</table1>
</dataSet>
756デフォルトの名無しさん:2006/08/19(土) 22:23:52
まずは雛形的に簡単な DataSet 作ってそいつのスキーマ取得してみたらどうだ。
757デフォルトの名無しさん:2006/08/20(日) 15:07:23
Visual C# 2005 Express Edition で質問です
オプション → キーボード の「次の追加キーボード マップ スキーム を適用」に (既定) 以外がありません。
何か特別なことをしないと駄目なのでしょうか?
758デフォルトの名無しさん:2006/08/20(日) 15:10:20
Standardを買ってください
759デフォルトの名無しさん:2006/08/20(日) 15:17:24
>>758
Express Edition には付いてないですか。
ttp://www.okisoft.co.jp/esc/vs-exp/2emacs.html
ここを見ると付いているみたいだったので質問したのですが、お騒がせしました。
ありがとうございました。
760757:2006/08/20(日) 15:18:55
しまった orz
こんなこと書かれてた orz

(例えば Visual C# 単体をインストールしただけでは「既定」しか選択できません。 Visual C++ をインストールすると,Visual C# でも「既定」に加えてテキスト エディタ「Brief」と「Emacs」の操作方法を選択できるようになります)
761デフォルトの名無しさん:2006/08/20(日) 17:22:52
>>754
つxsd.exe
762デフォルトの名無しさん:2006/08/20(日) 18:44:22
using (A a = new A()) { ... }
このとき、Aのコンストラクタで発生した例外をcatchするには、
usingブロック全体をtryブロックでくくらないといけないのですか?
763デフォルトの名無しさん:2006/08/20(日) 18:57:37
>>762
using ブロックで例外を catch できるとでも思ってるの?
764デフォルトの名無しさん:2006/08/20(日) 19:02:06
正直そう言う構文は有りだったとも思う。
using ( ... ) {
    ...
}
catch (HogeException ex) {
}
みたいなの。
そのうち採用してくれんかな。
765デフォルトの名無しさん:2006/08/20(日) 19:02:54
あー、でも using ステートメントで宣言した変数のスコープの問題もあるか……。
766762:2006/08/20(日) 19:06:24
try using (StreamReader reader = new StreamReader(path)) { ... }
767762:2006/08/20(日) 19:10:43
すみません。
try { using (StreamReader reader = new StreamReader(path)) { ... } }
catch (FileNotFoundException) { ... }

みたいなことをするなら、はじめからusingを使わずにfinallyを使ったほうが
見た目がきれいなのではないかと思ったからです。
usingを使うようなクラスは、コンストラクタで例外を投げるものが多いように感じますし
768デフォルトの名無しさん:2006/08/20(日) 19:31:12
FileNotFoundException なら先にファイルの存在をチェックしろといいたい
769デフォルトの名無しさん:2006/08/20(日) 19:41:03
>>768
その理屈はおかしいよ。
存在チェックした後実際に触るまでのあいだに削除される可能性は常に考慮してないと行けない。
事前に存在チェックするのも大事だけど。
770デフォルトの名無しさん:2006/08/20(日) 23:56:48
タブブラウザを作るときってaxwebbrowserをいくつも作るんですか?
なんか違うと思うのですがどのように実装するのか分かりません。
ヒント頂ければ幸いです。
771デフォルトの名無しさん:2006/08/21(月) 00:02:09
そのコントロールを使うかどうかは自由だが
IEコンポーネントはタブの数だけ必要だろ
772770:2006/08/21(月) 00:06:37
>>771
分かりました。ありがとうございます。
773デフォルトの名無しさん:2006/08/21(月) 00:16:56
>>771
タブだけ別に用意して、タブが切り替わったら axWebBrowser の中身を入れ替えるというのも
アリといえばアリ。
774770:2006/08/21(月) 00:21:06
>>773
そっちで想像していました。普通にいくつも作ればいいみたいですね。
ありがとうございました。
775デフォルトの名無しさん:2006/08/21(月) 03:49:27
>>773
いや、なしだと思うぞ…
そんなブラウザ使えねーだろ…
776デフォルトの名無しさん:2006/08/21(月) 07:56:12
質問です。
try-catch文でcatch出来ない例外や、catchし損ねた例外が発生した際、エラーログを出力するメソッドなどはありますか?
また、そのメソッドがない場合、例外が発生した時に発生するイベントを自作することは出来ますか?
777デフォルトの名無しさん:2006/08/21(月) 07:56:58
セキュリティとかステートとか履歴とかスクリプト処理とかゾーンとかあらゆることが無茶苦茶になるわな
778デフォルトの名無しさん:2006/08/21(月) 08:07:42
ASP.NETならApplication_Error
WindowsフォームならThreadExceptionとかUnhandledExceptionEventHandlerとか

「未処理の例外」でぐぐれ
779デフォルトの名無しさん:2006/08/21(月) 22:09:56
>>773
糞遅いでしょ。それ。
780776:2006/08/22(火) 01:48:09
>>778
ヒントを元にググったら何とか目的が達成できました。
ありがとうございました。
781デフォルトの名無しさん:2006/08/22(火) 02:22:17
>>779
重さ以前の問題があるわな
782デフォルトの名無しさん:2006/08/22(火) 12:23:58
ToolStripComboBoxには普通のComboBoxのように
DataSource、DisplayMember、ValueMember等の設定は出来ないのでしょうか?
783デフォルトの名無しさん:2006/08/22(火) 12:44:18
ToolStripComboBox.ComboBox プロパティ
784デフォルトの名無しさん:2006/08/22(火) 12:57:33
>>783
ありがとうございます
785デフォルトの名無しさん:2006/08/24(木) 02:54:47
日付や結果などのログを表示するのに
ListViewの詳細表示とDataGridViewのどっちを使う方が良いと思いますか?
786デフォルトの名無しさん:2006/08/24(木) 03:19:43
ログがDBやDataTableに格納されているならバインドが楽なDataGridView
ログがリアルタイムに発生して単にコントロールに追記するだけならListViewで十分
軽さを求めるならListView
アイコンを手軽に使いたいならListView
その他判断基準は色々ある

自分で両方試して目的に合う方を使うのがおすすめ
比較することでそれぞれの特性も理解できるし
787785:2006/08/24(木) 03:33:17
>>786
目的的にはListViewで十分そうですが
せっかくですので今後の勉強のためにも
両方使ってみることにします

ありがとうございました
788デフォルトの名無しさん:2006/08/24(木) 04:14:33
メインフォームから別のフォームを呼び出すときに、
データを渡して内容を変更したいのですが、
どうしたら良いのでしょうか?
789デフォルトの名無しさん:2006/08/24(木) 04:53:19
別のフォームとやらにデータ渡し用のpublicなメソッドを実装して、そこ経由で渡す
渡すだけじゃなく参照もしたいならプロパティで実装すれば良い
790デフォルトの名無しさん:2006/08/24(木) 16:52:17
[System.Windows.Forms.Design.ToolStripItemDesignerAvailability
(System.Windows.Forms.Design.ToolStripItemDesignerAvailability.ToolStrip)]
public class ToolStripDateTimePicker : ToolStripControlHost
{
public ToolStripDateTimePicker() : base(new DateTimePicker())
{
}
}
のコードを記載してデザイナでDateTimePickerを追加したいのですが
追加をすると一瞬表示されるのですが消えてしまいます。
理由わかりますか?
同じコードでnumericUpDownとかMonthCalenderとかは表示できるのですが・・・
791790:2006/08/25(金) 11:49:41
どなたかお解かりになる方いらっしゃいませんか?orz
792デフォルトの名無しさん:2006/08/25(金) 12:11:34
>>791
public ToolStripDateTimePicker()
 : base( new DateTimePicker() )
{
 this.Control.CreateControl();
}

で表示されたけど
793デフォルトの名無しさん:2006/08/25(金) 12:18:51
>>792
表示されました!!
本当にありがとうございました!
794790:2006/08/25(金) 12:51:30
なんどもすみません・・・orz
DateTimePickerは表示できたのですが、そのFormatの設定の仕方が分かりません・・・
設定の仕方を教えて頂けないでしょうか?
795デフォルトの名無しさん:2006/08/25(金) 13:02:41
InitializeComponent()の後で

DateTimePicker dp = (DateTimePicker)this.toolStripDateTimePicker1.Control;
dp.Format = DateTimePickerFormat.Custom;
dp.CustomFormat = "yy/M/d/ddd";

など。
796デフォルトの名無しさん:2006/08/25(金) 13:10:50
あと、ToolStripDateTimePickerクラスの定義で

public DateTimePicker DateTimePicker
{
 get
 {
  return (DateTimePicker)base.Control;
 }
}

みたいにプロパティでDateTimePicker にアクセスできるようにしておくと吉
797デフォルトの名無しさん:2006/08/25(金) 13:51:47
>>795-796
出来ました!
特に>>796をやると楽チンです

本当に本当にありがとうございました!!
798デフォルトの名無しさん:2006/08/26(土) 01:43:46
HttpWebRequest を並列化するために、BeginGetResponse じゃなくて Thread + GetResponse で構成するのって邪道なんですか?
なんか別々の URL にアクセスしたはずなのに、全く同じレスポンスが返ってきたっぽいんですが (;´Д`)

並列系のバグは再現性がなくて困るよ orz
799デフォルトの名無しさん:2006/08/26(土) 08:08:06
べつに自前でスレッド使ってもいいと思うぜ。
でも俺はそんなバグに出会ったことはない。
なにか間違ってるんだと思うよ。
800デフォルトの名無しさん:2006/08/26(土) 10:31:29
じぶんならMSの実装なんか当てにしないで別スレッドにしますが。
801デフォルトの名無しさん:2006/08/26(土) 10:38:03
それもMSの実装だろ
802デフォルトの名無しさん:2006/08/26(土) 10:52:06
いうと思った。
803デフォルトの名無しさん:2006/08/26(土) 11:21:28
それなら.NET FrameworkやWindowsも(略
804デフォルトの名無しさん:2006/08/26(土) 20:40:59
質問です。
プログラムAからプログラムBを起動するメソッドを書いていたのですが、
プログラムAにドロップされたファイルをプログラムBに渡すにはどうしたらいいでしょうか?
試しに以下のようなコードを書いてみましたが、プログラムBには渡せていませんでした。

private void Form1_Load(object sender, EventArgs e)
{
      string file = "";
      bool first = false;
string[] args = Environment.GetCommandLineArgs();
foreach (string work in args)
{
if (first)
file = work;
else
first = true;
}
      Process p = Process.Start(testprogram.exe,file);
p.WaitForExit();
}

//テストプログラム側

private void Form1_Load(object sender, EventArgs e)
{
string[] args = Environment.GetCommandLineArgs();
foreach (string work in args)
        MessageBox.Show(work);
}
805デフォルトの名無しさん:2006/08/26(土) 21:03:23
突っ込みどころが多すぎて
806804:2006/08/26(土) 21:15:37
修正
起動するメソッドを→Form_Load時に起動するコード
ドロップされたファイル→ドロップされたファイルのパス
807デフォルトの名無しさん:2006/08/26(土) 21:32:15
>>799
いや、明らかな間違いはないと思う。
今までに何十回とテスト飛ばしているけど、1件しか発生してないし。

というより、別々のオブジェクトからリクエスト飛ばしているから、
共有オブジェクトは全部洗い出して、そういうのは自前のソース中に無いらしいことは確認しているからなぁ……。
むしろ、そういう簡単な間違いであって欲しかったんだけど orz
808デフォルトの名無しさん:2006/08/26(土) 22:05:28
>>804
引数fileに空白が入ってると
複数の引数と認識される
ようするにダブルクォーテーションで括れってこった

ついでにそれだと複数ファイルをドロップしたときはどうすんの?
809デフォルトの名無しさん:2006/08/26(土) 22:11:07
>>804
最初の foreach ループは何をしたいの?
810デフォルトの名無しさん:2006/08/26(土) 22:14:38
GetCommandLineArgsで返ってくる配列の最初は自身のパスだから
それを飛ばしてるみたいですよw
811デフォルトの名無しさん:2006/08/26(土) 22:52:35
>>808
file = work;
のところを
file += "\"" + work + "\" ";
とすると複数ファイルでもうまくいきました。
ありがとうございました。

>>809,810
例文の
file = work;
が+=じゃなくて=だけだったから変な風に見えたのかもしれません。
それでも最初のは十分おかしいのかもしれませんが…
812デフォルトの名無しさん:2006/08/26(土) 23:43:13
>>811
>>804 の書き方だと string file = args[args.length-1]; と同じことになるよ。
2番目以降の要素を結合したいんだったら
for (int i = 1; i < args.length; ++i) { file += "\"" + args[i] + "\" "; }
とすればいい。
得体の知れないフラグを導入する必要はない。
813デフォルトの名無しさん:2006/08/27(日) 14:02:44
すみません。Yahooに自動でログインさせるメソッドを作っているのですが、(1)のあと
表示するのを待ってから(2)以降を実行させたいのですがどのようにすればいいのですか?


public void Login()
{
webBrowser1.Navigate("http://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp"); //(1)

HtmlDocument doc = webBrowser1.Document; //(2)
doc.GetElementById("login").InnerText = "ユーザーID";
doc.GetElementById("passwd").InnerText = "パスワード";
doc.GetElementById(".save").InvokeMember("Click");

}
814デフォルトの名無しさん:2006/08/27(日) 14:14:32
DocumentCompleted とかのイベント使えば
815デフォルトの名無しさん:2006/08/28(月) 06:17:33
WebBrowserであるwebサイトを表示

webページのリンクをクリック

IEが開いてリンク先のページが開く

このことを検出したいのですが
WebBrowser.Navigatingを使えばできるんでしょうか?
816デフォルトの名無しさん:2006/08/29(火) 10:45:25
Form1のDateTimePickerの日付をAccessのReportのTextBoxに表示して印刷したいのですが方法が分かりません
どのようにすればよろしいのでしょうか?
817デフォルトの名無しさん:2006/08/29(火) 10:48:17
そのまんま一つ一つやっていけば
818デフォルトの名無しさん:2006/08/29(火) 11:02:43
あぁ、すみません。
印刷は出来るのですが、ReportのTextBoxに値を設定する方法がわかりません。
Accessを開いた後に何かをすればよろしいのでしょうか?
819デフォルトの名無しさん:2006/08/29(火) 12:29:47
oleAccess.Reports!(ReportName)![テキスト1].ControlSource = "=111"をC#にするとどういう風になるんでしょうか?
820デフォルトの名無しさん:2006/08/29(火) 13:13:55
Access知らんけど
Accessを参照設定してるなら
インテリポイントでなんか出てくるっしょ

821デフォルトの名無しさん:2006/08/29(火) 13:20:11
>>819
((Microsoft.Office.Interop.Access.TextBox)oleAccess.Reports[ReportName].Controls["テキスト1"]).ControlSource = "=111";
822デフォルトの名無しさん:2006/08/29(火) 14:24:52
>>821
出来ました。ありがとうございました。
823デフォルトの名無しさん:2006/08/31(木) 08:03:05
埋め込みリソースから取り出したexeをファイルとして書き出さずに
MemoryStreamなどから起動する方法はないでしょうか?
824デフォルトの名無しさん:2006/08/31(木) 10:37:04
ない
825デフォルトの名無しさん:2006/08/31(木) 14:26:43
テキストボックスの書式って、どうやって設定すんの?
826デフォルトの名無しさん:2006/08/31(木) 14:33:04
つMaskedTextBox
827デフォルトの名無しさん:2006/08/31(木) 17:07:50
>>826
桁区切りを表示したいだけなんだよなー
データーを読み込むたびに書式設定してやれば出来るんだけど
もっと簡単にテキストボックス自体に書式設定できないのかなーと
簡単には出来ないんだね。ありがと
828デフォルトの名無しさん:2006/08/31(木) 21:05:27
ドラッグ&ドロップされたテキストファイル名をTextBoxに表示するって難しい?
極意の本にも載ってないしアロウドロップtrueにしてもうまく行かない
829デフォルトの名無しさん:2006/08/31(木) 21:08:23
>>828
AllowDrop = true の後、DragEnter と DragDrop に処理を記述
ttp://dobon.net/vb/dotnet/control/droppedfile.html
830デフォルトの名無しさん:2006/08/31(木) 21:11:28
>>829
はやい!!ありがとうございます!今から見てきますね
感謝
831828:2006/08/31(木) 21:38:45
エラー1名前 'ListBox1' は現在のコンテキスト内に存在しません。

なんて出ました。なんでだろ?

DragEnterの方は正常に動いたのに
ListBox1.Items.AddRange(fileName);のトコでエラーになります・・・
832デフォルトの名無しさん:2006/08/31(木) 21:40:38
ちなみに

namespace study1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
string[] fileName =
(string[]) e.Data.GetData(DataFormats.FileDrop, false);
ListBox1.Items.AddRange(fileName);
}
}
}

こんなです。
833デフォルトの名無しさん:2006/08/31(木) 21:53:56
*** サンプルコードは、自分の作っているプログラムに即するように変更すること ***

TextBox に表示するんなら、変数名が TextBox1 だとすると

    TextBox1.Text = fileName + "\n";

に変えなさいな
ListBox1 を作ったのならばこのとおりじゃないけど。
834デフォルトの名無しさん:2006/08/31(木) 21:54:48
まちげーた

    TextBox1.Text += filename + "\n";

これでおk
835デフォルトの名無しさん:2006/08/31(木) 22:12:17
ListBox1 じゃなくて listBox1 じゃねえのか?
836デフォルトの名無しさん:2006/08/31(木) 22:21:08
ありがとうございます。一応フォームにはリストボックスを貼り付けました。
どこか根本的な間違いを犯していると思います。
指摘お願いします。
837デフォルトの名無しさん:2006/08/31(木) 22:22:12
あ、すみません。2005EXPRESS EDITIONです
838デフォルトの名無しさん:2006/08/31(木) 22:22:15
>>836
D&Dの仕方を学ぶより、先ずはC#の基本を学びましょう。
ちなみに、煽りじゃなくて切実に言ってますんで (・ω・`)
839デフォルトの名無しさん:2006/08/31(木) 22:24:34
>>836
コンパイルエラーのでた箇所が表示されてるだろうが。
そこで波線を付けてくれた部分をよく見ろ
840デフォルトの名無しさん:2006/08/31(木) 22:26:07
>>838
そうですよね。判ります・・・
本も何冊か買ったんですけどクラスとか構造体とかよくわからなくて・・

んでサンプルをコピペ改変して遊ぶうちに見えてくるかなぁと
なんかお勧め本とかありませんか?お願いします

真剣に覚える気はあります
841デフォルトの名無しさん:2006/08/31(木) 22:28:23
>>839
はい。
>>831
こんな感じです
842デフォルトの名無しさん:2006/08/31(木) 22:28:40
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
これを読破したあと2.0の新機能を覚えれば完璧
843デフォルトの名無しさん:2006/08/31(木) 22:30:17
>>841
こんな感じですじゃなくて。

変数名は大文字小文字を区別します。

↑こんなことまで言わせるつもり?
844デフォルトの名無しさん:2006/08/31(木) 22:35:17
>>843
あああああああああああああああああああああああっ!!!!!!!!
すみません。むちゃくちゃ恥ずかしいです。。

ttp://homepage3.nifty.com/midori_no_bike/CS/
ここでの方法でも駄目だったんで基本的に勘違いしてるんだろうなぁ・・と決め付けてしまいました

本当におさわがせしました。いつか他の初心者さんに恩返し出来るように頑張ろうとおもいます
845デフォルトの名無しさん:2006/08/31(木) 22:39:49
´∀`)σ)´Д`;)
846デフォルトの名無しさん:2006/08/31(木) 22:41:06
>>844
ま、基本は大事ですよーと (・ω・`)



昔を思い出すなぁ。
java の話だけど、int と Integer の違いがさぱーり分からなかったとか ( ´ー`)y-~~
847844:2006/08/31(木) 22:45:00
>>845
>>846
なんかム板は怖いとこだと感じてましたがココは優しい人が多いですね
デバッグ出来ましたが動作は成功しませんでしたなんて言えません・・・orz

教えて頂いたサイトで勉強します
またなんか判らなかったら宜しくお願いします

でもみんな良くこんな難しいことできるよなぁ・・・・・
848デフォルトの名無しさん:2006/08/31(木) 22:48:09
>>847
ちゃんと貼り付けたlistBox1にDragEnterイベントとDragDropイベントを設定した?
>>832のコード貼り付けただけじゃ駄目だよ



849デフォルトの名無しさん:2006/08/31(木) 22:50:19
>>847
>ココは優しい人が多い
たまたまかもねー。
確かにム板は初心者にはきつい所もあるけど、尻込みせずに気楽にどうぞ。

プログラムは 【慣れ】 が重要だから、練習あるのみ、かな?
気づいたら何となく出来るようになってます。はい。
850デフォルトの名無しさん:2006/08/31(木) 22:54:21
>>848
はい。プロパティのイベント(雷マーク)ですよね?
だとしたらOKです。そしてそこをダブルクリックしてコードエディタで埋め込みました。
これって変ですか?

>>849
わたしもバッチ、WSHとサンプル弄くりたおして覚えたクチでして・・・
でも今回ばかりはそうはいかないみたいです(笑)
851デフォルトの名無しさん:2006/08/31(木) 22:56:07
ああああああああああ!判った!!
852デフォルトの名無しさん:2006/08/31(木) 23:04:24
分かったんかよw
853デフォルトの名無しさん:2006/08/31(木) 23:05:36
出来ました!!!
原因はフォームエディタでForm1のプロパティにイベント設定してました・・・・・orz
アフォですね。アフォすぎますね・・(´Д`;)

ポインタはプラスマークに勝手になるんじゃないんですね。設定の仕方は本に載ってました

あああああ!なんかすごい嬉しい。こんな程度の事ですけど
本当にありがとうございました。これからも宜しくお願いします
854デフォルトの名無しさん:2006/08/31(木) 23:14:34
あ、プラスマークになりますね。
もう、付き合ってられないですよね(笑)

では、おやすみなさい
855デフォルトの名無しさん:2006/09/01(金) 02:24:43
×ポインタ
〇カーソル

「ポインタ」はプログラムの話をするときは別の意味がある
856854:2006/09/01(金) 20:42:57
>>855
ひょっとして有名なぬるぽの「ぽ」ですか?
明日も会社にこっそり行ってC#勉強してきます!
857デフォルトの名無しさん:2006/09/01(金) 20:43:55
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| unsafeを感知しました |
|__________|
              / /
              /
      _         ビビビ
     /||__|∧    /
  。.|.(O´∀`) /
  |≡( ))  ))つ
  `ー| | |
    (__)_)
858デフォルトの名無しさん:2006/09/01(金) 20:47:29
/unsafe+
859デフォルトの名無しさん:2006/09/02(土) 06:03:19
ToolBar、アイコンの横にテキストを配置している状態で、ボタンごとにサイズを変えることは出来ないのですか?
なんか全部同じ大きさにそろってしまうのですが……。
860デフォルトの名無しさん:2006/09/04(月) 01:32:14
C#でテキストエディタを作ろうと思い、まずテキストビューワーを作っています。
タブや全角スペースに色をつけるため、DrawStringで一文字づつ表示をしているの
ですが、実行速度が非常に遅いです。
TextOutなども試してみましたが、あまり変わりませんでした。

なにか良い方法はないのでしょうか?
861デフォルトの名無しさん:2006/09/04(月) 01:39:06
改行ごとに分けた string をリストとかにぶち込むといった前処理はしているよな
862デフォルトの名無しさん:2006/09/04(月) 01:39:55
>>861
しています。
863デフォルトの名無しさん:2006/09/04(月) 01:57:39
まともなエディタ作りたいなら少なくとも今のところはネイティブな C++ で書くべきだがね。

ダブルバッファリングはしてるかい?
864デフォルトの名無しさん:2006/09/04(月) 02:07:54
>>860
unsafeでポインタを使うといいかもしれない。
865デフォルトの名無しさん:2006/09/04(月) 02:24:46
>>863
やはり、C++でやるべきですか…
描画をpictureBoxで行っているので、デフォルトでダブルバッファリングをしている
と思うのですが…

>>864
すでにやってみましたが、あまり大きな変化はありませんでした。
866デフォルトの名無しさん:2006/09/04(月) 02:32:45
[1] picturebox 使わない
[2] 画面外の文字はそもそも DrawString しない

どう?
867デフォルトの名無しさん:2006/09/04(月) 12:52:56
>>865
画像処理とか、計算とかのピーキーなチューニングが効果的な処理ならともかく、
GUI周りの処理で、C#をC++にしたところで、速度に実効的な差はでない。
「何で」書くかではなく「何を」書くかで決まる。
GDIリソースの取得タイミングとか、
>>866の言ってるような、クリッピング処理とか、バッファリング処理とか。
何が重い処理なのかを体感して、その重い処理の実行回数を減らすアルゴリズム
を考える。
868デフォルトの名無しさん:2006/09/04(月) 13:21:02
>何が重い処理なのかを体感して
「計測して」だろが。C#用のまともなプロファイラあるのかしらないが。
869デフォルトの名無しさん:2006/09/04(月) 14:41:27
C#というよりWin32/64アプリとしての計測になるかと
ユーザは言語やフレームワークなんて関係ないから
870デフォルトの名無しさん:2006/09/04(月) 16:43:54
RichTextBox
871デフォルトの名無しさん:2006/09/04(月) 20:27:44
>>867
いや、基本的に GDI+ を使う事になる .NET は GUI コンポーネント制作には向かんよ。
872デフォルトの名無しさん:2006/09/04(月) 20:52:46
ヒント:Swing
873デフォルトの名無しさん:2006/09/04(月) 21:11:49
VGAカードが正式にGDI+をサポートするようになったら考えてもいいな。
874デフォルトの名無しさん:2006/09/04(月) 21:28:08
空白のテキストボックスをemptyじゃなくてnullにしたいんですけど
どうすれば出来ますか?
875デフォルトの名無しさん:2006/09/04(月) 21:42:54
意味が分からん
876デフォルトの名無しさん:2006/09/04(月) 22:00:03
TextBox.Textはnullにはできません。
継承元のControl.Textが

set
{
 if (value == null)
 {
  value = "";
 }

 ...



みたいにしてた記憶がありんこ
877デフォルトの名無しさん:2006/09/04(月) 22:37:43
>>876
nullには出来ないのですね・・・残念です。
バインドしているデータなのでデータグリッドのセルやデーターテーブルをnullにして対処します。
ありがとうございました。
878デフォルトの名無しさん:2006/09/04(月) 22:41:50
テキストボックスをコンテナとして使おうとしてたの?
879デフォルトの名無しさん:2006/09/04(月) 23:17:51
>>878
コンテナというのが良くわかりませんが
データテーブルの内容をテキストボックスに表示してます。
空白のテキストボックスをデーターベースに戻すと空文字禁止のエラーが出るのでnullにしたかったのです。
880デフォルトの名無しさん:2006/09/04(月) 23:18:36
描画処理は余計なところは描画しないようにすでにしてありました。
また、pictureBox以外に描画をしましたが余り変わりませんでした。

また、DrawString時に、フォントを常にnewで作っていたのを描画前につくって
おくようにしたところ、若干向上が見られました。

C++で作り直すことも含め、まだ速くできないか検討してみます。
多くのご回答ありがとうございました。
881デフォルトの名無しさん:2006/09/04(月) 23:45:15
>>880
まず1文字ずつ描くよりも、まとめられるところはまとめてやったほうがよいと思う。

あと、Control.WndProcをオーバーライドし、
WM_PAINTを捕まえ、GDIで描くというのはどうだろう。
そこまでやるんだったら、C++(/CLI)にすべきだろうけど。
882デフォルトの名無しさん:2006/09/05(火) 00:11:37
C#固執で速度だけ求めるならManaged DirectXで描けばいいじゃない
883デフォルトの名無しさん:2006/09/05(火) 00:33:21
>>882
どの処理に時間を割いているのか、調べる必要があるだろうよ。
あと MDX でもフォントの描画は GDI だな。
884デフォルトの名無しさん:2006/09/05(火) 11:17:25
BindingNavigatorのボタンを押したときの処理ってのはどんなことをしているのですか?
どこかにコードで書いてありますか?
885デフォルトの名無しさん:2006/09/05(火) 11:24:09
>>884

> BindingNavigatorのボタンを押したときの処理ってのはどんなことをしているのですか?

MSDNにあります

BindingNavigator コントロールの概要 (Windows フォーム)
http://msdn2.microsoft.com/ja-jp/library/8zhc8d2f.aspx

> どこかにコードで書いてありますか?

処理を実装するコードは一般に公開されていません
処理を利用するサンプルコードはMSDNにあります

方法 : Windows フォーム BindingNavigator コントロールを使用してデータ間を移動する
http://msdn2.microsoft.com/ja-jp/library/2wcswths.aspx

方法 : Windows フォームの BindingNavigator コントロールを使用して DataSet を移動する
http://msdn2.microsoft.com/ja-jp/library/s4b01sz7.aspx
886デフォルトの名無しさん:2006/09/05(火) 11:31:40
>>885
>処理を実装するコードは一般に公開されていません
そうなんですか・・・。ありがとうございました
887デフォルトの名無しさん:2006/09/05(火) 12:04:40
昨夜、テキストボックスをnullに出来ないかと相談したものですが
データグリッドとかをnullにして出来たと思っていたのですが、いろいろな不具合が出ます
ADO.NETでデーターベースはAccessなのですが、Accessで空文字を禁止にしているので
空欄のテキストボックスをアップデートするとエラーが出てしまいます。
こういう場合はどのような処理をするのが一般的なのでしょうか?
Accessの空文字を許可するのが一番簡単なのでしょうか?
888デフォルトの名無しさん:2006/09/05(火) 12:59:30
データベースにテキストボックスから戻すときに
Length==0 なら nullを戻せばいいんじゃね?
889デフォルトの名無しさん:2006/09/05(火) 14:00:22
>>888
行を追加する場合や訂正ごとに更新をする場合はそれで大丈夫っぽいのですが
数行を訂正してから更新する場合にどうすれば良いのか困っています
昨夜悩んでデータグリッドのCellEnterとテキストボックスのkeyPresイベントに
if (String.IsNullOrEmpty(TextBox.Text) == true)
{
this.DataGridView[0, this.DataGridView.CurrentCell.RowIndex].Value = null;
}
を書いて成功した!と喜んだのですが、行の追加をするとエラーが出ることが判明しましたorz
それと、数行を訂正してから更新するとエラーが出たり出なかったりします

もう少し悩んでみます・・・


890デフォルトの名無しさん:2006/09/05(火) 15:02:04
if(hogehoge == true) って C ではやっちゃいけないし C# でもやるべきじゃねえだろ
891デフォルトの名無しさん:2006/09/05(火) 15:17:43
>>890
そうなんですか?では==trueは消しますね
後、空文字禁止のAccessの場合の一般的な処理を教えていただけると助かります
892デフォルトの名無しさん:2006/09/05(火) 17:35:05
なんかBindingSource.EndEdit()をするとnullに設定したものもstring.Emptyにされちゃうみたいですね・・・
考えられるありとあらゆるところにnullに設定するコード書いてみました・・・
とりあえず大丈夫そうですが本当にこれでいいのか心配です・・・
893デフォルトの名無しさん:2006/09/05(火) 17:47:32
>>890
よこレス失礼します。
なぜ駄目なのか後学のため、教えてください。
894デフォルトの名無しさん:2006/09/05(火) 17:54:21
かっこ悪いから。
そういうしきたりだから。
読むときにif (obj.IsHoge)みたいに自然な感じになるから。

==falseもやめとけ。if (!obj.IsHoge)にする。
895デフォルトの名無しさん:2006/09/05(火) 17:59:09
ぷっ
896デフォルトの名無しさん:2006/09/05(火) 18:01:25
C だと非0が true だから
897デフォルトの名無しさん:2006/09/05(火) 18:21:20
論理型と整数の暗黙変換があるC/C++の場合とそうでないC#の場合は別に考えないと。
論理型の変数や関数は単体で論理式として成り立つので、
簡潔であることをよしとする人は if (hogehoge) を好むが、
if (hogehoge==true) こっちの方が見やすいという人もいる。
どっちにしても最適化でロードモジュールには差は出ないだろう。ただし・・
if ((hoge > 0) == true) これはさすがにやめろといわれる。
if (((hoge > 0) == true) == true) なめとんのか・・・
898デフォルトの名無しさん:2006/09/05(火) 19:03:31
if( ( ( !( blFlag == true ) == false ) ? false : true ) != false )
{
 ...
}
899デフォルトの名無しさん:2006/09/05(火) 19:52:15
コンパイルすると == true は消えるよ。Debugでやっても消えた。
900デフォルトの名無しさん:2006/09/05(火) 20:32:43
まあ、一生 C# で書くつもりなら == true つけてもいいと思うが、
その癖を持ったまま他の言語を使うと失敗することもあるから気をつけな。
901デフォルトの名無しさん:2006/09/05(火) 22:36:49
>>900
例えば?
902デフォルトの名無しさん:2006/09/05(火) 22:41:40
903デフォルトの名無しさん:2006/09/06(水) 00:30:47
if (x)よりもif (x == true)と書くほうがよいと思うなら、
なぜそれよりif ((x == true) == true)と書くほうがよいと思わないのか?
なぜそれよりif (((x == true) == true) == true)と書くほうがよいと思わないのか?

というのをどこかで見た気がする。
904デフォルトの名無しさん:2006/09/06(水) 01:15:49
そもそもC#ではif文はboolしか受け付けないので(x == true)と明記する意味がない。
C++なら(x != FALSE)とか書くが。
905デフォルトの名無しさん:2006/09/06(水) 01:15:55
まあ、なんだ、思うわけねーだろぼけぇ
906デフォルトの名無しさん:2006/09/06(水) 01:17:32
if ステートメントは true であるか否かを判断するためのものだから == true というのは蛇足
907デフォルトの名無しさん:2006/09/06(水) 01:20:39
==trueもまたbool値を返してるわけだしな
908デフォルトの名無しさん:2006/09/06(水) 01:20:48
>>906
確かに蛇足なんだが、ブロックのインデントと同様に、
あくまでも個人のセンス(可読性)に任せるべきだと思う

おそらくコンパイラの吐き出すコードは一緒
909デフォルトの名無しさん:2006/09/06(水) 01:26:20
可読性は他人も読めるかを問うもの
個人だけならどうでもいいわけで

で、そのコードを共有する人々の多数が == true の方が良いというならそれで良いってだけ
エラーにも警告にもならない以上は正しいことであり、あとは使う人の問題
910デフォルトの名無しさん:2006/09/06(水) 02:02:14
C だと TRUE は non 0 だから、== TRUE だと 2 == 1 の比較みたいになりそうで怖い。
true は知らん。
911デフォルトの名無しさん:2006/09/06(水) 02:12:58
>>903
何か凄い納得。
==trueってのは、数値に無駄に0足してるようなもんなのかな
a = 1 + 2 + 0
はエラーにはならないが「正しい」書き方とは言い難い。
912デフォルトの名無しさん:2006/09/06(水) 06:41:23
まぁ、一見さんには意味が通りやすいってことだわな。

3a−2b=8

3×a−2×b=8
と書けば、確かに分かりやすいけど、慣れると上の方が見やすいことに気がつく。

条件文の中身はtrueを表す『式』を書かなくてはいけない、
って思ってたんで、自分も==を書いてたけど、面倒になって省略した。

誰に対する可読性かを考えて、どちらにするかを決めればいいんでない?
913デフォルトの名無しさん:2006/09/06(水) 07:07:57
3a-2b ってのは単なる簡略表記であって 3 x a - 2 x b と同じ式だけれども
== true ってのは式を評価すると結果として同じにはなれど式としては別の式だよ
914デフォルトの名無しさん:2006/09/06(水) 09:00:01
式ばかりに目を取られて if ステートメントという大枠を見失っていないか?
ifステートメントに限らず、制御構文の意義を理解すれば == true なんて書かなくても見やすいし意味が分かると思うんだが
915デフォルトの名無しさん:2006/09/06(水) 09:26:39
結論でないんだからどうでもいいじゃん
916デフォルトの名無しさん:2006/09/06(水) 13:55:45
どうでも良いならレスしたっていいじゃん
917デフォルトの名無しさん:2006/09/06(水) 17:07:12
WebRequestでWEBページを取得したいんですが、
なぜか自分以外のPCへ要求するとタイムアウトが発生してしまいます。
関係あるかわからないけど
[プロジェクト]-[プロパティ]-[セキュリティ]は完全に信頼する・・・にしてます。

try{
WebRequest webReq = HttpWebRequest.Create("http://yahoo.co.jp");
webReq.Method = "GET";
webReq.Timeout = 1000;
WebResponse webRes = webReq.GetResponse();
}catch (Exception ex) {
Console.WriteLine(ex.Message);
}
918デフォルトの名無しさん:2006/09/06(水) 18:32:59
URL間違ってるなw
919デフォルトの名無しさん:2006/09/06(水) 18:37:21
>>917

.NET Framework クラス ライブラリ
WebRequest クラス のサンプルコード とよく見比べてください。
920デフォルトの名無しさん:2006/09/06(水) 21:44:25
マルチかよ
教えてやるんじゃなかった。
921デフォルトの名無しさん:2006/09/06(水) 22:18:21
>>917
出て来い。
922デフォルトの名無しさん:2006/09/06(水) 22:33:31
構成ファイル(*.config)の内容をビルドの種類で変えることってできるのでしょうか?
C#のコードであれば #if〜#else〜#endif で制御できるのですが、.configの中は同じ方法でできませんでした
実現する方法をご存知の方、教えてください
923デフォルトの名無しさん:2006/09/06(水) 22:48:04
>>922
config ファイルをプロジェクトに登録せずに、直接 bin\Release とかに配置する
924デフォルトの名無しさん:2006/09/06(水) 22:55:57
axWebBrowserで作ったブラウザのリンクをクリックすると
InternetExplorerが新しく開いてしまうのですが、これを
自作のブラウザで開くようにするにはどうしたらいいでしょうか?
お願いします。
925デフォルトの名無しさん:2006/09/06(水) 23:26:10
>>922
前は構成ごとにビルドイベント作れてそれで別々のファイルをコピーとか出来たと思ったんだが
2005では構成で分けられないみたいだからdebugとreleaseそれぞれに別のファイルを別個でコピーしたら?
926924:2006/09/06(水) 23:53:52
質問訂正します。
ブラウザをタブブラウザに改造したいのですが、
新しい Window を開く場合にタブブラウザ内で開くにはどうすれば良いでしょうか?

下記に参考になるソースがあったのですが新しいウインドウを開いてタブブラウザで表示する動作に
関する記述がコードのどこにあるか分からなかったので・・
ttp://myanya.ifdef.jp/stb.html
927デフォルトの名無しさん:2006/09/07(木) 00:03:17
928デフォルトの名無しさん:2006/09/07(木) 00:06:43
shdocvwでやればNewWindow2ももれなくついてくるけどな
929デフォルトの名無しさん:2006/09/07(木) 00:14:27
>>926
コメントに「新しいウィンドウを生成しようとしたら」って書いてあるのに…
930デフォルトの名無しさん:2006/09/07(木) 00:14:42
.NETのありがたみが薄れる
931デフォルトの名無しさん:2006/09/07(木) 00:22:38
つーかWebBrowser.NewWindow があるような気がするが
932922:2006/09/07(木) 00:24:24
>>923 >>925
レスありがとうございます
Windowsアプリは教えていただいた方法で対応できました
プロジェクトでの設定と同期しないのが不便ですが、手順書で何とかできそうです

ですが、ASP.NETアプリやWebサービスは Web.config の場所が変えられないために対応できません
こればかりはどうしようもないのでしょうか
933デフォルトの名無しさん:2006/09/07(木) 06:24:22
>>931
それでは機能が足りないんだよ……。
934デフォルトの名無しさん:2006/09/07(木) 10:15:50
サイドバーやタスクバーのようにデスクトップにドッキングできるようなフォームは
どうすれば実現できるでしょうか。
935デフォルトの名無しさん:2006/09/07(木) 10:52:41
自力でスナップさせる
936デフォルトの名無しさん:2006/09/07(木) 11:33:55
>>934
もしかしてこういうイメージ?

Mantis Issues band - The Code Project - Shell Programming
http://www.codeproject.com/useritems/mantisband.asp

.NET FrameworkにこういうShell関係のってあったっけか
C++/SDKでしか作ったこと無いけど、C#でも移植すればできそう
937デフォルトの名無しさん:2006/09/07(木) 12:04:15
>>936
ttp://www.vipper.org/vip331504.jpg.html

こんな感じにしたいんですが.NETでは簡単にはできないっぽいんですかねぇ
938934:2006/09/07(木) 12:05:31
名前を忘れてしまったorz
939デフォルトの名無しさん:2006/09/07(木) 13:04:02
>>936
C#/VB.NET 用の BandObject はこれ
http://www.codeproject.com/csharp/dotnetbandobjects.asp

>>937
確か Win32API に、デスクトップのクライアントサイズを指定する関数があったような気がするけど、
名前忘れた。すまん。
940924:2006/09/07(木) 13:49:32
>>927->>931 , >>933
ありがとうございます。できました。

AxSHDocVw.AxWebBrowser axWebBrowser = new AxSHDocVw.AxWebBrowser();
e.ppDisp = axWebBrowser.Application;
941934:2006/09/07(木) 14:19:41
>>936, >>939
なるほど、Win32APIですか。調べてみます。
ありがとうございました。
942924:2006/09/08(金) 11:45:08
すみません。また質問なのですが、タブページにタイトルを設定したいのですが、
うまくいきません。

例えばヤフーだったらYahoo!JAPANとタブページに表示させたいのですが、
現在のコードではURLがひょうじされてしまいます。

System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
省略
this.tabControl1.Controls.Add(tabPage);
省略
axWebBrowser.TitleChange += new AxSHDocVw.DWebBrowserEvents2_TitleChangeEventHandler( SetTitle );

public void SetTitle( Object sender, AxSHDocVw.DWebBrowserEvents2_TitleChangeEvent e )
{
this.Text = e.text;
}

924のココ↓を参考にしてるんですが自クラスが多くて分からなくて・・・
ttp://myanya.ifdef.jp/stb.html

お願いします。

943デフォルトの名無しさん:2006/09/08(金) 11:45:51
あげ
944デフォルトの名無しさん:2006/09/08(金) 11:55:22
perlでいうmapやgrepといったリスト処理を扱うクラスってありますか?
945デフォルトの名無しさん:2006/09/08(金) 12:10:38
>>889
もう遅いかもしれないけど、DBに書き戻すときに
DBNull.valueを挿入するようにするとうまくいくんじゃないかとおもう。
946デフォルトの名無しさん:2006/09/08(金) 12:17:53
>>942
よくわからんが

this.Text = e.text;



this.Text = this.browser.LocationName;

にしたらどうか。
947デフォルトの名無しさん:2006/09/08(金) 12:21:12
>>942
>自クラスが多くて分からなくて

って、2つしかclassがないわけだが
948デフォルトの名無しさん:2006/09/08(金) 13:18:41
>>944
つ System.Text.RegularExpressions.Regex
949デフォルトの名無しさん:2006/09/08(金) 14:26:01
>>944
.NET2.0ならArrayまたはListクラスのConvertAllメソッドとFindAllメソッドがそれに近いかな
950デフォルトの名無しさん:2006/09/08(金) 14:59:54
なるほど。逆にいえばそれに相当するものは、2.0じゃないとないということですか。
ご回答ありがとうございました。
951デフォルトの名無しさん:2006/09/08(金) 15:26:11
ConvertAll や FindAll なら自前で作るのも簡単でしょ
ジェネリクスなしだと使い勝手はよくはないけどさ
952デフォルトの名無しさん:2006/09/08(金) 19:40:33
C#やってる 鬱だ 鬱だ 鬱だー
953デフォルトの名無しさん:2006/09/08(金) 20:20:48
俺はCで他人が書いたもちふのコードをC++でWinに移植してる。

これは激しく欝だ。
954デフォルトの名無しさん:2006/09/08(金) 21:11:52
すみません。EXCELのあるセルの文字を置き換えて保存したいんですが
参考になる所をどなたかご存知ないですか?

いまから具具ってきます
955デフォルトの名無しさん:2006/09/08(金) 21:17:47
ExcelのVBAを使ったほうが早いだろ
956デフォルトの名無しさん:2006/09/08(金) 21:24:52
簡単ではないということですね。
ExcelVBAってわからないんですがC#からExcelシート立ち上げてマクロを動かすってことですか?
957デフォルトの名無しさん:2006/09/08(金) 21:35:33
順番が逆
ぐぐって見つからなけりゃここで質問してよ
958デフォルトの名無しさん:2006/09/08(金) 21:38:01
>>957
すみません。今必死でやってますw
959デフォルトの名無しさん:2006/09/08(金) 22:02:33
なんか厨ぽいですけど・・・

クリップボードとSENDKEYSでやってみます
960デフォルトの名無しさん:2006/09/09(土) 01:30:11
馬鹿か!

Visual C# で Excel を自動化して、配列による範囲内へのデータ入力
および範囲内からのデータ取得を行う方法
961デフォルトの名無しさん:2006/09/09(土) 01:31:41
c# excel で検索すればいいものを…
962924:2006/09/09(土) 02:46:57
できましたーーーーーーーーーーー!!ありがとう!
かなり難しかった。
でもこんな簡単なことだったのか・・・

>>946>>947

ありがとうございました
963デフォルトの名無しさん:2006/09/09(土) 18:43:02
notifyIconをクリックでtrackBarみたいなのを出したいのですが
どうすればいいのでしょうか?イメージはボリューム調整のnotifyIcon?みたいな
感じです。

マウスカーソルの座標取得してtrackBarのLocationを設定したら表示されなかった。
964デフォルトの名無しさん:2006/09/09(土) 18:44:11
C#でx^2とかってどういう風に書くんでしょう?
とりあえず整数乗したいんですが
965デフォルトの名無しさん:2006/09/09(土) 18:44:58
>>964
Math.Pos(x, 2)
966デフォルトの名無しさん:2006/09/09(土) 18:45:02
>>964
1. 素直に x * x
2. 整数乗という制限を無視して Math.Pow(x, 2.0)
967デフォルトの名無しさん:2006/09/09(土) 18:45:34
バカ Pow だ
968デフォルトの名無しさん:2006/09/09(土) 18:47:34
Powはしってますが、実装は知らんけれどなんか遅そうな感じが。
969デフォルトの名無しさん:2006/09/09(土) 18:52:01
>>963
その TrackBar を Form に載っけてないとか言わないだろうな?

>>968
何万回も呼び出すんで無い限り無意味な心配だがね。
まあ整数乗なら簡単にメソッド化できるだろ。
970デフォルトの名無しさん:2006/09/09(土) 18:52:30
自作してコード量無駄に増やして面倒なことになるよりもよほど早い
971デフォルトの名無しさん:2006/09/09(土) 18:54:33
大量データのNLogNアルゴなのでパフォ削れるところは削ろうとしてます。
表記ないならしょうがないですね。メソッド作りがてら試してみます。
972963:2006/09/09(土) 19:43:04
>>969

載っけてなかった・・・
だが、載せても表示されなかったです。
contextmenuをオーナードローするとか・・・?
973デフォルトの名無しさん:2006/09/09(土) 19:52:54
>>972
のっけてそのFormをShowしたんだろうな?
974963:2006/09/09(土) 19:59:01
>>973しました。。。

private void notifyIcon1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int X = Cursor.Position.X ; // X 座標 の取得
int Y = Cursor.Position.Y ; // Y 座標 の取得

Point pos = new Point(X,Y ) ;

Form3 f3 =new Form3();
f3.Show();
f3.Location = pos;
}
}
975デフォルトの名無しさん:2006/09/09(土) 20:17:34
int Y = Cursor.Position.Y -100; // Y 座標 の取得
に変えたら動きました
とか言ったらぬっころすよ
976デフォルトの名無しさん:2006/09/09(土) 20:40:02
f3.Location = Cursor.Position;
でいいじゃんネー(o´・д・)(・д・`o)ネー

とりあえずそのイベントが発火してるかどうか確かめれ
977デフォルトの名無しさん:2006/09/09(土) 20:42:14
よく見たらCursorなんか使うからおかしい

f3.Location = Control.MousePosition;
に決まってるじゃんネー(o´・д・)(・д・`o)ネー
978デフォルトの名無しさん:2006/09/09(土) 20:45:57
Show()する前にLocationやSizeの設定済ませないと
979デフォルトの名無しさん:2006/09/09(土) 21:05:39
>>978
設定した位置に表示されませんと来る罠
そして Form のメンバを一通り調べろと答える私
980963:2006/09/09(土) 21:58:43
>>975->>979
ありがとう

>>975 int Y = Cursor.Position.Y -100; // Y 座標 の取得
に変えたら動きました

>>976>>977>>978
表示されない

でもなんか、表示されるけどタスクバーの後ろに隠れちゃってるんですけど・・・
981デフォルトの名無しさん:2006/09/10(日) 00:47:48
うめ
982963:2006/09/10(日) 00:58:17
もれもうめ
983デフォルトの名無しさん:2006/09/10(日) 01:02:11
埋めてもいいが、次スレは?
984デフォルトの名無しさん:2006/09/10(日) 03:05:46
985デフォルトの名無しさん:2006/09/10(日) 11:29:20
次スレ

ふらっとC♯, C#(初心者用) Part9
http://pc8.2ch.net/test/read.cgi/tech/1157855247/
986デフォルトの名無しさん:2006/09/10(日) 14:28:09
986
987デフォルトの名無しさん:2006/09/11(月) 10:06:50
988デフォルトの名無しさん:2006/09/14(木) 05:40:06
988
989デフォルトの名無しさん:2006/09/14(木) 12:11:48
989
990727:2006/09/14(木) 17:33:08
1ヶ月たってしまいましたが、>>728のとおりにしてみます。埋め。
991デフォルトの名無しさん:2006/09/14(木) 20:35:41
991
992デフォルトの名無しさん:2006/09/15(金) 03:22:31
992
993デフォルトの名無しさん:2006/09/15(金) 03:29:42
ふらっとC♯, C#(初心者用) Part9
http://pc8.2ch.net/test/read.cgi/tech/1157855247/
994デフォルトの名無しさん:2006/09/15(金) 13:50:52
995デフォルトの名無しさん:2006/09/15(金) 16:28:26
996デフォルトの名無しさん:2006/09/15(金) 16:40:11
997デフォルトの名無しさん:2006/09/15(金) 16:52:29
998デフォルトの名無しさん:2006/09/15(金) 16:54:43
999デフォルトの名無しさん:2006/09/15(金) 16:55:14
1000デフォルトの名無しさん:2006/09/15(金) 16:55:45
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。