ふらっとC♯, C#(初心者用) Part12
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/01/09(火) 00:51:48「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
0002デフォルトの名無しさん
2007/01/09(火) 00:53:05ふらっとC♯, C#(初心者用) Part11
http://pc10.2ch.net/test/read.cgi/tech/1166240484/
関連スレ
C♯, C#相談室 Part36
http://pc8.2ch.net/test/read.cgi/tech/1165656839/
0003デフォルトの名無しさん
2007/01/09(火) 00:53:36http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
0004デフォルトの名無しさん
2007/01/09(火) 00:54:08http://www.borland.com/jp/products/csharpbuilder/index.html
Turbo C#
http://www.turboexplorer.com/csharp
.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp
0005デフォルトの名無しさん
2007/01/09(火) 00:55:43乙
0006デフォルトの名無しさん
2007/01/09(火) 00:56:38MSDNライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=373930cb-a3d7-4ea5-b421-dd6818dc7c41&DisplayLang=ja
MSDNをローカルで見れる。
0007デフォルトの名無しさん
2007/01/09(火) 01:05:59釣りは過疎ってる時に50レス程度に
0008デフォルトの名無しさん
2007/01/09(火) 01:12:01while(Checked==False) sleep(100);
とかすれば出来る
0009デフォルトの名無しさん
2007/01/09(火) 01:13:44C#、同期とかでググって見るとか、前スレのキーワードをググって見るとか
0010デフォルトの名無しさん
2007/01/09(火) 01:14:35Checkedじゃないわけ?
0011デフォルトの名無しさん
2007/01/09(火) 01:16:03スレッド間でどういうやり取りが出来るかが見えていないとみた
0012デフォルトの名無しさん
2007/01/09(火) 01:17:36なんで値?を取得する必要があるわけ?
0013デフォルトの名無しさん
2007/01/09(火) 01:18:04いまだに思っている俺がいるんだがなんか間違っているのか?
0014デフォルトの名無しさん
2007/01/09(火) 01:18:24それは回答してる一部のやつらも同じ
0015デフォルトの名無しさん
2007/01/09(火) 01:19:27がわかんないんじゃないの?
0016デフォルトの名無しさん
2007/01/09(火) 01:19:501)スレッド1でちょっと待っている間に、スレッド2がCheckedをtrueに変更したら即座に待ちを止めてtrue時の処理
2)待ち時間タイムオーバー時は(念のためCheckedを確認して)何らかの処理
ってことかな?
0017デフォルトの名無しさん
2007/01/09(火) 01:20:18そう思い込んでるだけで。
そんなわけねーとは思うがこんなんでスレッドなんて扱えねーだろ
0018デフォルトの名無しさん
2007/01/09(火) 01:21:120019デフォルトの名無しさん
2007/01/09(火) 01:22:330020デフォルトの名無しさん
2007/01/09(火) 01:25:120021デフォルトの名無しさん
2007/01/09(火) 01:25:28逆の勘違いなら見るが…
0022デフォルトの名無しさん
2007/01/09(火) 01:25:420023デフォルトの名無しさん
2007/01/09(火) 01:26:13thread2は変更不可
値の取得しかできません
thread1 thread2
. .
bool msg; .
msg=returnBoolMethod(); .
. public void returnBoolMethod()
. {
trueでないと↓を .
実行しない return (true);
.
次の処理 }
. .
. .
0024デフォルトの名無しさん
2007/01/09(火) 01:28:13なんだそれは…
0025デフォルトの名無しさん
2007/01/09(火) 01:29:10おまえの考えてることなんて分からないんだよ。
悲しいことにね。
0026デフォルトの名無しさん
2007/01/09(火) 01:30:17そうです
0027デフォルトの名無しさん
2007/01/09(火) 01:30:26たのむから、
>>15や>>16のようなわかりやすい処理の流れを説明してくれ
0028デフォルトの名無しさん
2007/01/09(火) 01:30:330029デフォルトの名無しさん
2007/01/09(火) 01:30:41while((msg=thread2.returnBoolMethod)==False) sleep(100);
次の処理
じゃだめ?
0030デフォルトの名無しさん
2007/01/09(火) 01:32:19trueがかえるまで待つんじゃないのか?
0031デフォルトの名無しさん
2007/01/09(火) 01:33:030032デフォルトの名無しさん
2007/01/09(火) 01:33:59どういう状態を表してるんだ?
0033デフォルトの名無しさん
2007/01/09(火) 01:35:00Threadオブジェクトってのは単なるスレッドの状態を持ってるオブジェクトだろ?
0034デフォルトの名無しさん
2007/01/09(火) 01:35:00そのwhileの中にsleepが2秒たったら、諦めるというコードを入れればいけるかも!
ちょっと試して見ます
0036デフォルトの名無しさん
2007/01/09(火) 01:36:01×実効
○実行
0037デフォルトの名無しさん
2007/01/09(火) 01:36:57あ、いや、だめだ。
returnBoolMethodは、それ自体が他の処理もやっていて
その処理が何度も実行されてしまうからwhileの中に入れるのはだめなんです
>>32
スレッドの意味もよくわかってないです。
スレッドというか、別のクラスと考えてください。
スレッドとかマルチスレッドとかそういうのはわかりません。
0038デフォルトの名無しさん
2007/01/09(火) 01:37:35C#ってThreadクラスとかってって無いの?
0039デフォルトの名無しさん
2007/01/09(火) 01:38:19ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0040デフォルトの名無しさん
2007/01/09(火) 01:38:230041デフォルトの名無しさん
2007/01/09(火) 01:38:33じゃあ、処理をばらせばいいだろ
0042デフォルトの名無しさん
2007/01/09(火) 01:40:130043デフォルトの名無しさん
2007/01/09(火) 01:40:27まじで>>17か?
0044デフォルトの名無しさん
2007/01/09(火) 01:41:10条件
1.Aクラスから、StaticなBクラスを呼び出して値を返してもらう
2.その値を返すタイミングはわからない。最大2秒待つ
3.そのBクラスは一切変更できない。呼び出しと値の返すことしかできない。
4.Bクラスは1度しか呼び出せない。
5.値はTrueかfalseを返してくる。どちらかが返ってくるまでAクラスの処理は待機する
0045前スレ801
2007/01/09(火) 01:42:39誰かがそういう風に言ったので
私がやろうとしてることはスレッドと呼ばれるものだと
思い込んでました。すみません。
0046デフォルトの名無しさん
2007/01/09(火) 01:43:35Bクラスのメソッドを呼ぶ。
↓
返ってくるまでそのスレッドはブロックされる。
以上。終了。
0047デフォルトの名無しさん
2007/01/09(火) 01:44:08ただ値が帰ってくるのを待てば良い。
非同期呼び出しとかしなければ、何をするまでもなく待機してくれる。
0048デフォルトの名無しさん
2007/01/09(火) 01:44:110049デフォルトの名無しさん
2007/01/09(火) 01:44:52その1回の呼び出しは誰が…
1回て…
ただよんでtrueなら処理するだけ?
なわけねーよな…
0050前スレ801
2007/01/09(火) 01:46:33ばらすということは、Aクラスを別のとこから呼び出すということになりますよね?
じゃあ、その呼び出し元はやっぱり、値が返ってくるまで待たなければならず
値が返ったかどうかもわかりません
親の親のそのまた親のって感じで処理が↑へと遺伝していくだけじゃないですか?
0051デフォルトの名無しさん
2007/01/09(火) 01:46:540052前スレ801
2007/01/09(火) 01:48:25それはごもっともですが
問題なのは。Bクラスは、非同期であるということなんです
同期型なら、値が返ってきたら、次の処理という風に
自然に自動でやってくれますが
AクラスとBクラスは非同期で、それぞれが勝手に動いてます
0053デフォルトの名無しさん
2007/01/09(火) 01:49:34値が返るまで待たないといけないと。
さてさて
0054デフォルトの名無しさん
2007/01/09(火) 01:50:41その前に>>44の条件がよくわからんのだが、
>1.Aクラスから、StaticなBクラスを呼び出して値を返してもらう
>2.その値を返すタイミングはわからない。最大2秒待つ
っていうのはどういう意味なんだよ
メソッドを呼べば値は帰ってくるだろ?
Aクラスの時なんかの状態とメソッドの返り値は同期していないってことだろ?
0055デフォルトの名無しさん
2007/01/09(火) 01:50:45同期メソッドの非同期呼び出し
http://msdn2.microsoft.com/ja-jp/library/2e08f6yc(VS.80).aspx
キーワード: デリゲート BeginInvoke WaitHandle
以上。
おやすみ。
0056デフォルトの名無しさん
2007/01/09(火) 01:51:020057デフォルトの名無しさん
2007/01/09(火) 01:51:520058デフォルトの名無しさん
2007/01/09(火) 01:52:12005947
2007/01/09(火) 01:52:13俺が言っている 【非同期】 は IAsyncResult とかが出てくるほうだけど、その認識でOK?
もしそうなら IAsyncResult -> AsyncWaitHandle -> WaitOne(TimeSpan, Boolean) で解決するけど、これじゃ不満?
0060前スレ801
2007/01/09(火) 01:53:21Bクラスはユーザーからの入力待ちと考えてください。実際は違いますけど
なので、呼び出したからすぐ値が返ってくるわけではないです
0061前スレ801
2007/01/09(火) 01:55:09Bクラスはユーザーからの入力待ちです
0062デフォルトの名無しさん
2007/01/09(火) 01:55:37Bクラスで状態が変ったらAクラスに通知するんじゃダメな理由は何?
通常、UIはオブザーバーパターンの実装になるだろう?
0063デフォルトの名無しさん
2007/01/09(火) 01:55:42でその戻り値は普通にブールと
有り得るかそんなの!
0064デフォルトの名無しさん
2007/01/09(火) 01:57:450065前スレ801
2007/01/09(火) 02:00:32メソッドを呼び出したいわけじゃなく、クラスを呼び出したいんです
0066デフォルトの名無しさん
2007/01/09(火) 02:01:09実質的に誰も困る事はあるまいw
0067デフォルトの名無しさん
2007/01/09(火) 02:02:131つの方法に固執するのはよくない
なんでそんなにヘンな前提を置きたがるのかがわからんからなんともいえんが
あまりいいつくりとはいえないだろうね
0068前スレ801
2007/01/09(火) 02:03:59どうやら相当難しいことみたいですね。
もしくは、初心者スレでは許容範囲超えてるのかな
とにかく、わたしもまだ風呂も入ってないので
今日はこの辺でお暇させていただきます
長々とお付き合いして頂いた方々
ほんとうにありがとうございました。
0069デフォルトの名無しさん
2007/01/09(火) 02:04:07先ず用語を覚えろ。話はそれからだ。
0070デフォルトの名無しさん
2007/01/09(火) 02:06:08>もしくは、初心者スレでは許容範囲超えてるのかな
>もしくは、初心者スレでは許容範囲超えてるのかな
>もしくは、初心者スレでは許容範囲超えてるのかな
>もしくは、初心者スレでは許容範囲超えてるのかな
>もしくは、初心者スレでは許容範囲超えてるのかな
0071デフォルトの名無しさん
2007/01/09(火) 02:07:38お前が問題を難しくしているだけだ
0072デフォルトの名無しさん
2007/01/09(火) 02:07:500073デフォルトの名無しさん
2007/01/09(火) 02:09:090074前スレ801
2007/01/09(火) 02:09:560075デフォルトの名無しさん
2007/01/09(火) 02:10:03今日はJavaの宿題スレで宿題してやっちゃったり
ここでヘンなやつの相手しちゃったり
無駄な体力使っちゃったなーwww
0076デフォルトの名無しさん
2007/01/09(火) 02:11:400077デフォルトの名無しさん
2007/01/09(火) 02:11:480078デフォルトの名無しさん
2007/01/09(火) 02:13:12また、新しい条件を設けてのらりくらり
楽しかったお^^
0079デフォルトの名無しさん
2007/01/09(火) 02:13:450080デフォルトの名無しさん
2007/01/09(火) 02:16:030081デフォルトの名無しさん
2007/01/09(火) 02:16:260082デフォルトの名無しさん
2007/01/09(火) 02:19:520083デフォルトの名無しさん
2007/01/09(火) 02:22:440084デフォルトの名無しさん
2007/01/09(火) 02:24:21だから、Aから呼んだ先Bでは別スレッド開始してすぐ戻ってくるんだろ...
1)呼び元AでスレッドCを開始、スレッドCはタイマーをはってBを呼び戻りを待つ
AはスレッドCが終わるのを待つ
2)スレッドCはタイムアウトもしくはBからの戻りでAに制御を戻す
ってことかな(´д`)どうかな
0085デフォルトの名無しさん
2007/01/09(火) 02:29:26値を返すメソッドだって言ってるじゃねーか
0086デフォルトの名無しさん
2007/01/09(火) 02:31:400087前スレ801
2007/01/09(火) 02:36:00もう少し調べてわからなければ、また質問させていただきます
string msg =Str.SubString(initA)
MessageBox.Show(msg)
SubStringの反応が悪く、値を返してくれるかわからない
そういう場合どうしますか?
値がもどらなければ、msgはnullのままです。
通常は、値が返ってくるまでmessageboxの処理はやらないのが自然ですけど
値が返ってくる来ないに関係なく次のmessageboxの処理まで行ってしまうということです
008884
2007/01/09(火) 02:39:39> 問題なのは。Bクラスは、非同期であるということなんです
> 同期型なら、値が返ってきたら、次の処理という風に
> 自然に自動でやってくれますが
>
> AクラスとBクラスは非同期で、それぞれが勝手に動いてます
って書いてあるからなぁ
AクラスからBクラスのメソッドを呼び出したら、Bクラスのメソッドが終わるまでAには制御が戻らないよね?
...あきらめて寝るw
008984
2007/01/09(火) 02:41:29> 返ってくる来ないに関係なく次のmessageboxの処理まで行ってしまう
マジ?
0091デフォルトの名無しさん
2007/01/09(火) 02:45:17009284
2007/01/09(火) 02:45:26んじゃ >84 でどぉ?
0093デフォルトの名無しさん
2007/01/09(火) 02:47:32そんなこと出来るわけないのは分かるだろ
0095デフォルトの名無しさん
2007/01/09(火) 02:48:39日本語でおk
0096デフォルトの名無しさん
2007/01/09(火) 02:50:16どこに待機の必要があるわけ?
0097前スレ801
2007/01/09(火) 02:55:39これなら、AがBをタイマーで張って待ってるのと変わらないんです
>>96
Bメソッドは、そのまたCメソッドを呼び出すので
そのCメソッドが値を返す返さないに関係なく
Bメソッドは結果を出してしまうためです。
0098前スレ801
2007/01/09(火) 02:57:02BはAにもCにも依存せずに、すぐに結果を出してしまうわけです。
0099デフォルトの名無しさん
2007/01/09(火) 02:59:30その場合はどうにかして結果を調べる必要があるだろ?
メソッドの結果は最終結果じゃないんだから。
だったら調べる方法は用意しつあるだろ?
あとはまあそれをポーリングするだけだろ?
メソッドの戻り値が最終結果なら最初から何も考える必要ないだろ。
0100デフォルトの名無しさん
2007/01/09(火) 03:00:480101前スレ801
2007/01/09(火) 03:03:10A1メソッド
{
Bメソッド();//すぐに値を返して次の処理(Cメソッド呼び出し)へ移る
Cメソッド();//いくつかの処理をして値を返す
}
Bメソッドが呼び出さないで、Cメソッドを呼び出すとエラーになります。
また、Bメソッドと同期を取ると、Cメソッドは実行されません。
BとCは親子関係になります。Bが親、Cが子であり、
AクラスからはBもCも他人の家族です
0102デフォルトの名無しさん
2007/01/09(火) 03:07:25つまりCメソッドの結果
調べる方法はないけど結果は取得する必要があるわけかな?
出来るかぼけ
0103デフォルトの名無しさん
2007/01/09(火) 03:08:09つまりCメソッドの結果
調べる方法はないけど結果は取得する必要があるわけかな?
出来るかぼけ
0104デフォルトの名無しさん
2007/01/09(火) 03:09:16全然分からねー
0105デフォルトの名無しさん
2007/01/09(火) 03:11:550106デフォルトの名無しさん
2007/01/09(火) 03:12:54家族ってなんだ?
0107デフォルトの名無しさん
2007/01/09(火) 03:16:02また、Bメソッドと同期を取ると、Cメソッドは実行されません。
BとCは親子関係になります。Bが親、Cが子であり、
AクラスからはBもCも他人の家族です
えーっと...まぁなんだ
日本語でおk
0108デフォルトの名無しさん
2007/01/09(火) 03:30:13なんかそれらしいのがMSDNにありますけどぉ...
0109前スレ801
2007/01/09(火) 04:09:32A−1メソッド
{
BクラスのBメソッド();//処理をする
//ここで待機
/*次の処理 ここもBの1の処理し終えてなければならない
*/
CクラスのCメソッド();//Bが1の処理し終わってなければ呼び出してはならない
}
A-2メソッド:Bの1の処理が終わっていることを判断するメソッド
{
}
0110前スレ801
2007/01/09(火) 04:11:45ありがとうございました。
おやすみなさい
0111デフォルトの名無しさん
2007/01/09(火) 05:24:08何をどうやりたかったのか最後まで分からなかったが、
こんだけレス費やしてその解決方法はひでぇ。
>>55,>>59では駄目なのか?
0112前スレ801
2007/01/09(火) 05:36:33Bメソッドの処理が終わるまで待つのはダメなんです
Bメソッドの処理が終えるのはCメソッド(イベント)が終わるのが条件ですから
Bメソッドの処理が終わるまで待つと、Bメソッドのところで止まったままになり
CメソッドへもAクラスから終了するように命令できないのでダメなんです
↓わかり易くいうとこんな感じ
Bメソッド
{
・Cデリゲート
・Cイベントが終了したのでBメソッドも終了
}
Cイベント
{
AクラスのAメソッドからCイベントを終了するように命令されるのを待つ
}
Cイベントを終了させるにはAクラスから処理しなければならない
0113デフォルトの名無しさん
2007/01/09(火) 05:37:180114デフォルトの名無しさん
2007/01/09(火) 10:30:210115デフォルトの名無しさん
2007/01/09(火) 10:33:03ていうか、死ぬほど出てるポーリングとどう違うんだよ
0116前スレ801
2007/01/09(火) 11:57:18負荷が高い処理が時間のかかる処理を並行してやらせるためのものですよね?
これだと、次の処理に行ってしまうのでダメ
ポーリングだと、処理が終えるまで待機してくれるのはいいですが
そのポーリングで呼び出した先のメソッドはどうやってかけばいいんでしょ?
実際、Cイベントがいつ終了するかはわからないので何度もスキャンしてやらないだめなんです
Cメソッド
{
Scan();
}
↑をポーリングで待機したって、falseがすぐに帰ってくるだけです
答えはすぐ返ってきますが、それは真ではないです。
成功すれば1秒以内にtrueが返ってくるけど
そうでない場合はfalseが返ってきます
0117デフォルトの名無しさん
2007/01/09(火) 12:11:15> MessageBox.Show(msg)
結局はこれなんだろ?
んで、SubString はタイムアウト時に null を返す可能性があると。
ここまでは合ってるのか?
0119デフォルトの名無しさん
2007/01/09(火) 12:19:42何も返さないというのはありえない。
null ないし何らかの string インスタンスが返るという大前提がある。
1つ聞くが、本当に C# なんだよな?
0120前スレ801
2007/01/09(火) 12:24:08{
Thread.Sleep(ScanDelay);
int ExitsAnser=Scant();
if(ExitsAnser!=0) doWhileKeeped=false;
if(OverWorkTime> ScanningTime) doWhileKeeped=false;
OverWorkTime /= ScanDelay;
}
while(doWhileKeeped)
0121前スレ801
2007/01/09(火) 12:27:50C#ですが、相手は値を返さずにエラーを起こしてハングアップする可能性があります
ハングアップした場合は、処理を中断させるように促さなければなりません
0122デフォルトの名無しさん
2007/01/09(火) 12:36:33そんな糞な相手は使うなw
Thread 使って SubString を切り離し、元 Thread では Join をタイムアウト付きで実行、
んで Join から抜けても Thread 終了していなかったら Abort してやれ。
0123デフォルトの名無しさん
2007/01/09(火) 12:37:110124前スレ801
2007/01/09(火) 12:44:20それだと元Threadが生きたままになってしまうので
ユーザー側がハングアップしていると思い何度も
一連のプログラムを実行させようとする可能性があります
ユーザー側に暗黙的なルールを持たせたくはないのです
なので、この処理をしている間はGUIは入力イベントを受け付けない
設計でないといけません。
0125デフォルトの名無しさん
2007/01/09(火) 12:46:11この処理をしている間は GUI イベントを受け付けなければいいじゃないか。
Control.Enable で GUI の有効・無効が設定できるぜ。
0127デフォルトの名無しさん
2007/01/09(火) 12:52:51あるから! ちゃんと意味はあるから騙されたと思ってやってみろ。・゚・(ノД`)・゚・。
0128前スレ801
2007/01/09(火) 12:55:31確かに両方ともハングアップしてしまう可能性があるので強制終了というハメにならないためにマルチスレッドにして終了プロセスのみ受け付けるようにしたほうがいいかもしれませんが、だが、断る!
0129デフォルトの名無しさん
2007/01/09(火) 13:09:21それから俺用語も使うな!
0130デフォルトの名無しさん
2007/01/09(火) 13:17:240131デフォルトの名無しさん
2007/01/09(火) 13:18:340132デフォルトの名無しさん
2007/01/09(火) 13:23:15レスしているうちに問題点が見つかることはよくあること
初心者スレだしどんどん質問していこう
0133デフォルトの名無しさん
2007/01/09(火) 13:24:15参考書籍として、.NET Framework プログラミングテクニック Vol.3
を購入しましたが、midiOut しか扱っていません。
C#でmidiInの参考になるようなサイトがあったら教えてください。
0134デフォルトの名無しさん
2007/01/09(火) 13:26:220135デフォルトの名無しさん
2007/01/09(火) 13:27:54結果が得られるまで繰り返すんだよ
0136デフォルトの名無しさん
2007/01/09(火) 13:29:20それではおまえが801の変わりにわかりやすく質問してみろ
おれは結局何がしたかったのかがわからん
0137デフォルトの名無しさん
2007/01/09(火) 13:30:59それはCメソッドのことたろ
Bメソッドの話をしてたんじゃないのか?
0138デフォルトの名無しさん
2007/01/09(火) 13:32:50コード書いて教えてやれよ
0139デフォルトの名無しさん
2007/01/09(火) 14:11:20ちょっと感謝w
0140デフォルトの名無しさん
2007/01/09(火) 14:39:14死ぬほど書かれてただろうが
0141デフォルトの名無しさん
2007/01/09(火) 14:48:08その配列に対応するXMLの要素の繰り返しは、順番を保持したまま格納される?
0142デフォルトの名無しさん
2007/01/09(火) 15:17:330143141
2007/01/09(火) 15:31:35贅沢でスマソ
0144デフォルトの名無しさん
2007/01/09(火) 15:38:210145デフォルトの名無しさん
2007/01/09(火) 15:40:370146デフォルトの名無しさん
2007/01/09(火) 17:17:100147デフォルトの名無しさん
2007/01/09(火) 17:25:20そんなに心配ならインデックスとアイテムをセットにした構造体に入れとけば
0148デフォルトの名無しさん
2007/01/09(火) 18:22:250149デフォルトの名無しさん
2007/01/09(火) 20:11:06早くエスパー現れてコード書いて解決してくれよ!
もうやってらんない
0150デフォルトの名無しさん
2007/01/09(火) 20:22:35Console.Write("BABEL");
}
0151デフォルトの名無しさん
2007/01/09(火) 21:53:59NewWindowでそれをキャンセルするか、それを許可して、IEで開かせるかしかできないの?
どこのURLを開こうとしているのかを取得して、WebBrowserコントロールで表示したいんだが…。
NewWindowの中では、今、表示しているページのURLしか取れないし…。
0152デフォルトの名無しさん
2007/01/09(火) 21:59:15http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewWindow2Event.htm
0153デフォルトの名無しさん
2007/01/09(火) 22:00:23普通に考えてできないわけないだろ
0154デフォルトの名無しさん
2007/01/09(火) 22:35:230155デフォルトの名無しさん
2007/01/09(火) 22:43:11はげどー
0156デフォルトの名無しさん
2007/01/10(水) 00:09:340157デフォルトの名無しさん
2007/01/10(水) 00:18:090158デフォルトの名無しさん
2007/01/10(水) 00:37:180159デフォルトの名無しさん
2007/01/10(水) 00:38:150160デフォルトの名無しさん
2007/01/10(水) 01:13:07C# 2005 Express Edition を使用しています。
下記のようにMDIフォームからフォームを子(以下、childForm)として呼び出しているのですが、
Form childForm = new Form();
TextBox txtBox = new TextBox();
childForm.Controls.Add(txtBox);
childForm.MdiParent = this;
childForm.Text = "子フォーム";
childForm.Show();
childFormのテキストボックスに対してCtrl+Vでの貼り付けができません。
同様にCtrl+Cでのコピーもできません。
テキストボックス内での右クリックメニューから選択すればできます。
childForm.MdiParent = this;
の部分をコメントにしてchildFormをMDIの子フォームとして呼び出さなければCtrl+VもCもできます。
MDIフォームの子フォームというのはそういうものなのですか?
0161デフォルトの名無しさん
2007/01/10(水) 01:23:56つか今時 MDI ?
0162デフォルトの名無しさん
2007/01/10(水) 01:29:31コピー・貼り付けボタン用意しちゃえ
0163デフォルトの名無しさん
2007/01/10(水) 01:54:45親フォームのメニューとかで Ctrl+C と Ctrl+V を喰ってないかチェックしたれ
0164160
2007/01/10(水) 03:14:53回答ありがとうございます。問題解決しましたので書いておきます。
MDIフォームを作るときに「新しい項目の追加」から「MDI親」を選択して
自動的に作成されたMDI親フォームをそのまま使用していたのですが、
その親フォームにはメニューバーやツールバーやステータスバーがはじめからついていて、
そのメニューバーの[編集]-[切り取り]に割り当たっていたショートカット(Ctrl+V)に
持って行かれていたようです。
割り当たっているショートカットを削除したら無事貼り付けできました。
ありがとうございましたヾ(*´∀`*)ノ キャッキャ
ところでMDIって流行っていないんですか??
0165デフォルトの名無しさん
2007/01/10(水) 03:27:160166デフォルトの名無しさん
2007/01/10(水) 03:32:17お勧めかどうかは知らない。
0167デフォルトの名無しさん
2007/01/10(水) 09:36:05スレ違い
おまえらコーディングで使ってるフォントなんだ!!
ttp://pc10.2ch.net/test/read.cgi/tech/1032261438/
0168デフォルトの名無しさん
2007/01/10(水) 11:38:04ハッシュの配列を作ろうとしているのですが
Hashtable[] ht = new Hashtable[10];
ht[0]["testkey"] = "testvalue"; ← ここでヌルポ参照エラー
になってしまいます。。。
ht["testkey"][0] = "testvalue";
ht[0].Add("testkey", "testvalue");
ht[0].Keys["testkey"] = "testvalue";
すべてだめでした。。。
もうどうしたらいいのか。。。
お願いします。
0169デフォルトの名無しさん
2007/01/10(水) 11:43:160170デフォルトの名無しさん
2007/01/10(水) 11:57:16なるほど。。。
勘違いをしていたようです。ありがとうございます。
0171デフォルトの名無しさん
2007/01/10(水) 12:01:33Hashtable ht1 = new Hashtable[10];
Hashtable ht2 = new Hashtable[10];
hashの変数を二つ用意するのでは駄目なのかな
このほうが可読性が良いし、データとして扱い易い
んじゃないかな
0172デフォルトの名無しさん
2007/01/10(水) 12:10:34ガッ!
0173デフォルトの名無しさん
2007/01/10(水) 12:54:11?…??
0174デフォルトの名無しさん
2007/01/10(水) 13:01:05型 'System.Collections.Hashtable[]' を型 'System.Collections.Hashtable' に暗黙的に変換できません。
0175デフォルトの名無しさん
2007/01/10(水) 13:01:190176デフォルトの名無しさん
2007/01/10(水) 13:02:210177デフォルトの名無しさん
2007/01/10(水) 18:55:13ガッ!
0178デフォルトの名無しさん
2007/01/10(水) 22:29:560179デフォルトの名無しさん
2007/01/10(水) 22:58:070180デフォルトの名無しさん
2007/01/10(水) 23:05:060181デフォルトの名無しさん
2007/01/10(水) 23:19:230182デフォルトの名無しさん
2007/01/10(水) 23:41:470184デフォルトの名無しさん
2007/01/10(水) 23:46:480185デフォルトの名無しさん
2007/01/11(木) 00:15:290186デフォルトの名無しさん
2007/01/11(木) 00:29:05{
//base.OnSleep( e );
base.OnWakeUp( new WakeUpEventArgs( this.mother ) );
}
0187デフォルトの名無しさん
2007/01/11(木) 00:33:33{
e.Dream.Add(new 気になるあの子());
}
0188デフォルトの名無しさん
2007/01/11(木) 00:48:440189デフォルトの名無しさん
2007/01/11(木) 01:34:090190デフォルトの名無しさん
2007/01/11(木) 01:35:560191デフォルトの名無しさん
2007/01/11(木) 15:50:49教えてエロい人!><
0192デフォルトの名無しさん
2007/01/11(木) 17:54:170193デフォルトの名無しさん
2007/01/11(木) 20:40:55APIでやるんですね☆
0194デフォルトの名無しさん
2007/01/11(木) 21:20:100195デフォルトの名無しさん
2007/01/12(金) 00:06:310196デフォルトの名無しさん
2007/01/12(金) 00:16:13FindWindow / FindWindowEx でアドレスバー探して WM_GETTEXT を SendMessage かね。
0197デフォルトの名無しさん
2007/01/12(金) 08:54:25DataSet(拡張子xsd)を継承して拡張する事は可能でしょうか?
0198デフォルトの名無しさん
2007/01/12(金) 10:37:490199デフォルトの名無しさん
2007/01/12(金) 11:48:40private void button1_Click(object sender, System.EventArgs e)
{
DialogResult dr = folderBrowserDialog1.ShowDialog();
if(dr == DialogResult.OK)
list();
}
private void button2_Click(object sender, System.EventArgs e)
{
DialogResult dr = folderBrowserDialog1.ShowDialog();
if(dr == DialogResult.OK)
list2();
}
0200199
2007/01/12(金) 11:49:17private void list()
{
textBox1.Clear();
listBox1.Items.Clear();
textBox1.Text = folderBrowserDialog1.SelectedPath.ToString();
DirectoryInfo di = new DirectoryInfo(textBox1.Text) ;
foreach (DirectoryInfo dir in di.GetDirectories()) // フォルダの一覧表示
{
listBox1.Items.Add(dir.Name);
}
foreach (FileInfo file in di.GetFiles()) // ファイルの一覧表示
{
listBox1.Items.Add(file.Name);
}
}
0201199
2007/01/12(金) 11:50:35private void list2()
{
textBox2.Clear();
listBox2.Items.Clear();
textBox2.Text = folderBrowserDialog1.SelectedPath.ToString();
DirectoryInfo di = new DirectoryInfo(textBox2.Text) ;
foreach (DirectoryInfo dir in di.GetDirectories()) // フォルダの一覧表示
{
listBox2.Items.Add(dir.Name);
}
foreach (FileInfo file in di.GetFiles()) // ファイルの一覧表示
{
listBox2.Items.Add(file.Name);
}
}
0202デフォルトの名無しさん
2007/01/12(金) 12:00:24list()の引数でTextBoxを渡せればlist2はいらんわな。
0203デフォルトの名無しさん
2007/01/12(金) 17:28:02private void button1_Click(object sender, System.EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
list(textBox1, folderBrowserDialog1.SelectedPath.ToString());
}
private void button2_Click(object sender, System.EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
list(textBox2, folderBrowserDialog1.SelectedPath.ToString());
}
private void list(TextBox textBox,ListBox listBox, string strPath)
{
textBox.Clear();
listBox.Items.Clear();
textBox.Text = folderBrowserDialog1.SelectedPath.ToString();
DirectoryInfo di = new DirectoryInfo(strPath);
foreach (DirectoryInfo dir in di.GetDirectories()) // フォルダの一覧表示
{
listBox.Items.Add(dir.Name);
}
foreach (FileInfo file in di.GetFiles()) // ファイルの一覧表示
{
listBox.Items.Add(file.Name);
}
}
0204デフォルトの名無しさん
2007/01/12(金) 17:29:54SelectedPathをToString()してる意味が分からん。
0205デフォルトの名無しさん
2007/01/12(金) 17:33:58private void list(TextBox textBox,ListBox listBox, string strPath)
{
textBox.Clear();
listBox.Items.Clear();
× textBox.Text = folderBrowserDialog1.SelectedPath.ToString();
○ textBox.Text = strPath;
0206デフォルトの名無しさん
2007/01/12(金) 17:35:13ぬお、気づかれた・・・orz
0207デフォルトの名無しさん
2007/01/12(金) 18:09:24も必要なし
0208デフォルトの名無しさん
2007/01/12(金) 18:17:49listの引数にstrPathはいらない
0209203
2007/01/12(金) 18:26:07すまん>>199
private void button1_Click(object sender, System.EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
list(textBox1, listBox1);
}
private void button2_Click(object sender, System.EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
list(textBox2, listBox2);
}
private void list(TextBox textBox,ListBox listBox)
{
listBox.Items.Clear();
textBox.Text = folderBrowserDialog1.SelectedPath.ToString();
DirectoryInfo di = new DirectoryInfo(textBox.Text);
foreach (DirectoryInfo dir in di.GetDirectories()) // フォルダの一覧表示
{
listBox.Items.Add(dir.Name);
}
foreach (FileInfo file in di.GetFiles()) // ファイルの一覧表示
{
listBox.Items.Add(file.Name);
}
}
0210デフォルトの名無しさん
2007/01/12(金) 18:26:090211デフォルトの名無しさん
2007/01/12(金) 18:31:530212203
2007/01/12(金) 18:44:18※listBoxEx:渡されたパスからフォルダ、ファイルリストを表示する
setPathメソッドを実装したカスタムコントロール
private void button1_Click(object sender, System.EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
textBox1.Text = folderBrowserDialog1.SelectedPath;
listBoxEx1.setPath(textBox1.Text);
}
private void button2_Click(object sender, System.EventArgs e)
{
textBox2.Text = folderBrowserDialog1.SelectedPath;
listBoxEx2.setPath(textBox2.Text);
}
0213デフォルトの名無しさん
2007/01/12(金) 19:28:07できました。有難うございました
0214デフォルトの名無しさん
2007/01/13(土) 19:49:011 印刷領域をできるだけ命一杯使う
2 用紙と画像の縦横比が異なる場合長いほうを印刷領域に合わせる
お願いします。
0215デフォルトの名無しさん
2007/01/13(土) 20:46:440216デフォルトの名無しさん
2007/01/13(土) 21:34:54サービスについての知識が全くありません。
参考になるサイトがありましたら教えてくだ
0217216
2007/01/13(土) 21:54:33回答がなかったのでこちらで訊きます
0218デフォルトの名無しさん
2007/01/13(土) 21:56:590219デフォルトの名無しさん
2007/01/13(土) 22:28:370220デフォルトの名無しさん
2007/01/14(日) 00:03:06ttp://www.itmedia.co.jp/enterprise/articles/0502/01/news083.html
コレで満足か?
あとコレだけはおぼえておけ
マルチは死ね
0221デフォルトの名無しさん
2007/01/14(日) 00:35:320222デフォルトの名無しさん
2007/01/14(日) 00:41:140223デフォルトの名無しさん
2007/01/14(日) 22:54:03同じコードを両方に書けば簡単ですね。
他に方法はありますか?
0224デフォルトの名無しさん
2007/01/14(日) 23:02:09とりあえずここから
・A/Bに同じイベントを登録する
・A/Bで同じMethodを呼び出す
0225デフォルトの名無しさん
2007/01/14(日) 23:06:27微妙にいってることが違う。
0227デフォルトの名無しさん
2007/01/14(日) 23:12:35プロパティウインドウで呼び出すイベントハンドラをマウスで変えるだけ
0228デフォルトの名無しさん
2007/01/14(日) 23:13:52答えずに答えにあやつけるご意見番の>>225に聞いてwww
0229デフォルトの名無しさん
2007/01/14(日) 23:13:57buttonB.Click += new EventHandler( buttons_Click );
ってことじゃなくて?
0230デフォルトの名無しさん
2007/01/14(日) 23:17:17イベント呼び出すのとイベントハンドラ呼ぶのはべつ。
0231223
2007/01/14(日) 23:17:46あ、これで出来るんですか!
ありがとうございました。勉強になりました!
>>229
自分の知識では、まだ理解できないので調べてみようと思います。
0232225
2007/01/14(日) 23:18:45でもこの方法は勧めない。
0233223
2007/01/14(日) 23:27:20やりたいことはまさに>>227です。
この方法は勧めない、とありますが、どういった理由からなんでしょうか?
0235デフォルトの名無しさん
2007/01/14(日) 23:37:08細かく書くと全然違うけどこんな感じ
ボタンクリック
↓
OnClick
↓
イベント発生
↓
イベントハンドラ
0236225
2007/01/14(日) 23:39:060237223
2007/01/14(日) 23:41:54イベントによる処理がイベントハンドルという事であっていますか?
>>225
お手数かけますが、もう少し具体的に教えていただけますか?
0238223
2007/01/14(日) 23:43:05イベントハンドラ → ○
失礼しました。
0239デフォルトの名無しさん
2007/01/14(日) 23:57:03225じゃないが
×A/Bに同じイベントを登録する
○A/B双方のClickイベントに対して同じイベントハンドラを登録する
てことかな
イベントハンドラはイベントが発生したときの処理
0240223
2007/01/15(月) 00:06:48そういうことですね。
>イベントハンドラはイベントが発生したときの処理
なんとなく、イベントとイベントハンドラの違いがわかりました。
ありがとうございます。
0241デフォルトの名無しさん
2007/01/15(月) 02:46:15同じプロシージャ呼んだ方が初心者らしくて良いと思うのだが。
0242デフォルトの名無しさん
2007/01/15(月) 04:36:47コントロール+E,R,J,L
が発生しくて困っています。
フォーカス移動のショートカットのようなのですが、
回避してイベントを受け取る方法はありませんか?
0243デフォルトの名無しさん
2007/01/15(月) 11:40:120244199
2007/01/15(月) 14:45:51遅くなりましたがありがとうございました。
>>212
>※listBoxEx:渡されたパスからフォルダ、ファイルリストを表示する
>setPathメソッドを実装したカスタムコントロール
↑の作り方が分からなくて・・結局こんな感じになりました。
private void list(TextBox textBox,ListBox listBox)
{
listBox.Items.Clear();
textBox.Text = folderBrowserDialog1.SelectedPath;
DirectoryInfo di = new DirectoryInfo(textBox.Text);
foreach (DirectoryInfo dir in di.GetDirectories()) // フォルダの一覧表示
{
listBox.Items.Add(dir.Name+"*");
}
foreach (FileInfo file in di.GetFiles()) // ファイルの一覧表示
{
listBox.Items.Add(file.Name);
}
}
0245199
2007/01/15(月) 14:46:50private void button1_Click(object sender, System.EventArgs e)
{
DialogResult dr = folderBrowserDialog1.ShowDialog();
if(dr == DialogResult.OK)
if ((sender as Button).Name == "button1")
{
list(textBox1,listBox1);
}
else
{
list(textBox2,listBox2);
}
}
で、ボタン1と2とでイベントハンドラを共有してます。
どうでしょうか。
0246デフォルトの名無しさん
2007/01/15(月) 15:23:43どうしても一緒にしたかったら
button_click(int nButton) でも作って両方のハンドラからこれを呼ぶとか
0247デフォルトの名無しさん
2007/01/15(月) 19:10:29後でボタン変えるときも便利。
0248デフォルトの名無しさん
2007/01/15(月) 19:14:31せめて (sender == this.button1) とかにしとけ。
0249デフォルトの名無しさん
2007/01/15(月) 19:27:080250デフォルトの名無しさん
2007/01/15(月) 19:31:56釣りなんでしょうか?
0251デフォルトの名無しさん
2007/01/15(月) 19:32:070252デフォルトの名無しさん
2007/01/15(月) 19:35:020253デフォルトの名無しさん
2007/01/15(月) 20:16:49asを使うならnullチェックしろ
他の型が来ないとわかってるなら普通にキャストしろ
NullReferenceExceptionが出たら原因がわかりにくい
0254デフォルトの名無しさん
2007/01/15(月) 21:06:41this.listBox1などなぜわざわざやってるのかがわからない
0255デフォルトの名無しさん
2007/01/15(月) 21:08:260256デフォルトの名無しさん
2007/01/15(月) 21:10:57今は一文字目から開いてくれるけど
0257デフォルトの名無しさん
2007/01/15(月) 21:14:43ローカル変数ってメソッド内の変数のことですよね?
それぐらいわざわざ書かなくても区別できると思うんですけど
0258デフォルトの名無しさん
2007/01/15(月) 21:16:43this.name = name;
}
0259デフォルトの名無しさん
2007/01/15(月) 21:17:32区別できないときにはthisをつける必要があるだろ。
そこでインスタンスメンバにthisが付いてたり付いていなかったりすると紛らわしいから俺は全部につけることにしてる。
0260デフォルトの名無しさん
2007/01/15(月) 21:18:36大規模になってくればなおさら
以前this付けずに作ってた時期のソース見ると
見にくいこと限りなし。
インテリセンスでローカル変数を除外できるという利点もあるし
0261デフォルトの名無しさん
2007/01/15(月) 21:23:44get{ return this.value; }
set{ this.value = value; }
}
public int Property{
get{ return value; }
set{ @value = value; }
}
0262デフォルトの名無しさん
2007/01/15(月) 21:29:33this.name = name;
}
個人的にはこの名前の付け方は勧めない。
string nameの部分を
string nameeという風にミスタイプした場合に悲劇が起こる。
0263デフォルトの名無しさん
2007/01/15(月) 21:31:03MSDNにある命名方法に従えばそうせざるを得ない
0264デフォルトの名無しさん
2007/01/15(月) 21:34:000265デフォルトの名無しさん
2007/01/15(月) 21:34:04言ってる意味分かってない人はいないよな?
0266デフォルトの名無しさん
2007/01/15(月) 21:39:590267デフォルトの名無しさん
2007/01/15(月) 21:41:090268デフォルトの名無しさん
2007/01/15(月) 21:42:110269デフォルトの名無しさん
2007/01/15(月) 21:42:21m_nameのm_のことだと思うよ
0270デフォルトの名無しさん
2007/01/15(月) 21:48:37ちゃんとVSが警告してくれるよ
0271デフォルトの名無しさん
2007/01/15(月) 21:53:09Formクラスはそれ自体がデカイ上にポトペタでメンバが増えていくから全体の見通しが付きにくいので、
thisも付けまくるし各種プレフィックスもハンガリアン記法もためらわず使ってる。
0272デフォルトの名無しさん
2007/01/15(月) 21:55:060273デフォルトの名無しさん
2007/01/15(月) 23:10:36Form1のプライベートメンバであるnameよりForm2.Nameの方が目立つから腹立つので
Form1のもNameと宣言してるんだけどダメ?
0274デフォルトの名無しさん
2007/01/15(月) 23:11:430275デフォルトの名無しさん
2007/01/15(月) 23:20:39マニュアルには
MenuStrip.Itemsに追加できるのはToolStripMenuItem って書いてるのに
インテリセンスだと、menuStrip1.Items.Add(ってやるとToolStripItemsしか追加できないんだけど
どういうこと?
menuStrip1.Items[].と入力してもToolStripItemだから、.DropDownItems.Addができないんだけど・・
これってバグ?
c#EE
0276デフォルトの名無しさん
2007/01/15(月) 23:24:091. ToolStripMenuItemはToolStripItemsの孫クラス
2. キャストしろ
0277デフォルトの名無しさん
2007/01/15(月) 23:27:17VBっぽくなるからやめれ
0278デフォルトの名無しさん
2007/01/15(月) 23:32:28なるほどそういうことか
ありがとう
0279199
2007/01/16(火) 09:44:09ありがとう。コードを簡潔にするにはイベントハンドラ共有とか使った方がいいと思ってたけど、
こういう時はメソッド呼んだ方がいいんだね。勉強になりました。
0280デフォルトの名無しさん
2007/01/16(火) 12:35:190281デフォルトの名無しさん
2007/01/16(火) 14:52:56また1つのListViewで、1つのアイテムしか選択できないようにしたいのですが、どうしたら良いのでしょうか><
教えて下さい。エロい人
0282デフォルトの名無しさん
2007/01/16(火) 15:04:38ListViewのHideSelectionをFalseにしろ。
ただし、フォーカスがあたってない方はグレイで反転される。
2つ目はMultiSelectをFalseにしる。
0283デフォルトの名無しさん
2007/01/16(火) 15:06:56どうすれば編集できるのでしょうか?
既にそういうソフトがあるのは知ってるのですが、
ID3タグをどのような仕組みで取得するか知りたいです。
よろしくお願いします。
0284デフォルトの名無しさん
2007/01/16(火) 15:21:520285デフォルトの名無しさん
2007/01/16(火) 15:23:51図々しくも、もう1つだけ教えて下さいエロい人!
デフォルトでアイテムを選択させるには、どうしたらイイディスカ??
ListBoxだと ListBox.SelectedIndex みたいなのが知りたいです ><
0286デフォルトの名無しさん
2007/01/16(火) 15:51:22listView.SelectItems.Add(listView.Items[0])
0287デフォルトの名無しさん
2007/01/16(火) 18:19:25コンパイラ・コンパイラに興味あるんですが、
C#にもJavaCCみたいなツールはありますか?
0288デフォルトの名無しさん
2007/01/16(火) 18:20:59ある
0289デフォルトの名無しさん
2007/01/16(火) 18:25:38早速のレスありがとうございます。
ツール名があれば教えていただきたいのですが・・・
0290デフォルトの名無しさん
2007/01/16(火) 18:31:230291デフォルトの名無しさん
2007/01/16(火) 18:33:150292デフォルトの名無しさん
2007/01/16(火) 18:33:52ttp://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html
java 用のコンパイラコンパイラだけど、なぜか C# も吐ける
0293デフォルトの名無しさん
2007/01/16(火) 18:40:01聞いたことあったけどC#が使えるのは知らなかった。
面白そうなので早速使ってみます。
0294デフォルトの名無しさん
2007/01/16(火) 22:40:180295デフォルトの名無しさん
2007/01/16(火) 22:41:08すまん。
0297デフォルトの名無しさん
2007/01/17(水) 00:10:09DeflatStreamを使って圧縮するのと、BWT+LZ78ってどっちが縮みますか?
0298デフォルトの名無しさん
2007/01/17(水) 00:16:240299デフォルトの名無しさん
2007/01/17(水) 01:32:090300デフォルトの名無しさん
2007/01/18(木) 12:40:28プロジェクトが存在するディレクトリ外にある共通のクラスを参照したいのですが、
既存の項目の追加を行っても、プロジェクト下にソースコードをコピーしてしまいます。
どのようにしたらいいのでしょうか?
0301デフォルトの名無しさん
2007/01/18(木) 12:48:06追加ボタンのドロップダウンでリンクとして追加
0302デフォルトの名無しさん
2007/01/18(木) 13:00:54Thx.
>追加ボタンのドロップダウンでリンクとして追加
追加ボタンというのはツールチップで
”新しい項目の追加”と表示されるボタンでOK?
そこには”リンク”という項目が見あたらない。
0303デフォルトの名無しさん
2007/01/18(木) 13:06:55既存項目の追加のダイアログ
0304デフォルトの名無しさん
2007/01/18(木) 13:12:35でけた〜
ありがとうございました。(ずーとなやんでたんだよ〜)
0305デフォルトの名無しさん
2007/01/18(木) 18:24:31そのフォルダと同じ名前のフォルダを追加してからコードファイルを普通に追加でもおk
0306デフォルトの名無しさん
2007/01/18(木) 18:50:35ウィンドウ自体を移動させたいのですが、上手くいきません。
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
switch (m.Msg) {
case WM_LBUTTONDOWN:
PostMessage(this.Handle, WM_NCLBUTTONDOWN, (IntPtr)HTCAPTION, m.LParam);
break;
default:
break;
}
return;
}
PostMessageをインポートし、各必要な値(WM_LBUTTONDOWN, WM_NCLBUTTONDOWN, THCAPTION)は定義してあります。
ドコが悪いのでしょうか☆
0307デフォルトの名無しさん
2007/01/18(木) 18:59:010308デフォルトの名無しさん
2007/01/18(木) 19:11:31どのようになるのか書いたほうがいい。
0309デフォルトの名無しさん
2007/01/18(木) 19:12:21case WM_NCLBUTTONDOWN:
base.WndProc(ref m);
if (m.wParam == HTCLIENT) m.wParam = HTCAPTION;
break;
}
かな。脳内でしかビルドしてない。
0310デフォルトの名無しさん
2007/01/18(木) 19:16:11{
case WM_NCHITTEST:
if (m.Result == (IntPtr)HTCLIENT) m.Result = (IntPtr)HTCAPTION;
break;
}
こうじゃね?試してないが
0311デフォルトの名無しさん
2007/01/18(木) 19:38:500312デフォルトの名無しさん
2007/01/18(木) 19:43:410313デフォルトの名無しさん
2007/01/18(木) 19:54:27>>310 出来ました。 ありがとう御座います。
>>302 許しを請うてはいませんが・・・?
0314デフォルトの名無しさん
2007/01/18(木) 19:55:200315デフォルトの名無しさん
2007/01/18(木) 19:55:57パネルコントロールに2つリストボックスを乗せました。
で、Listbox1にはあるディレクトリ内のファイルリストを。
Listbox2にはそのファイル群の更新日時を入れました。
ファイルの数が多いと当然スクロールバーが現れますが
そのままではListbox1とListbox2が同期して動きませんよね
どうしたらよいのでしょうか?おねがいします
0316デフォルトの名無しさん
2007/01/18(木) 20:00:510317デフォルトの名無しさん
2007/01/18(木) 20:03:18ありがとうございます!!
・・・すみません。追加いいですか?
エクスプローラーみたいに更新日時でソート掛けたいんですけど
sortプロパティをどうつかっていいのやら・・
よかったら教えてください
0318デフォルトの名無しさん
2007/01/18(木) 20:23:360319デフォルトの名無しさん
2007/01/18(木) 20:28:31あ、すみません。しったかしてました・・
Listboxとかのsortプロパティを使うのかなぁ・・・って思ったのですが
0320デフォルトの名無しさん
2007/01/18(木) 20:35:160321デフォルトの名無しさん
2007/01/18(木) 20:43:23これのこと?
http://dobon.net/vb/dotnet/control/lvitemsort.html
0322デフォルトの名無しさん
2007/01/18(木) 20:52:10あ、はい!これは知りませんでしたがこんな感じのプロパティないかな?
って探してました。でもTips見ると結構難しそうですね。
コピペで作っても理解してないと意味がないと思うので
がんばって教えて頂いたサイトで勉強してみます!!
ありがとうございました
0323デフォルトの名無しさん
2007/01/18(木) 21:50:13オブジェクトの内部状態だけが変化するメソッド
(privateメンバを書き換える)
のテストの書き方がいまいちわかりません
テストクラスはテスト対象のクラスのprivateメンバにアクセスできないので、
意図通りにオブジェクトの状態が変化したかどうかをテストできないのです・・・
皆さん単体テストの時どうしてますか?
0324デフォルトの名無しさん
2007/01/18(木) 21:54:280325デフォルトの名無しさん
2007/01/18(木) 22:20:44ありがとうございます
NUnitはprivateアクセッサが無いみたいなので、
(VisualStudioTSにはあるみたいですね)
リフレクションを使って頑張ってみます
0326デフォルトの名無しさん
2007/01/18(木) 23:39:08ボタンの背景を透明にしたのですが、ボタンの枠(border?)のような線を
消したいのですが、どうしたら良いのでしょうか。
よろしくお願いします。
0327デフォルトの名無しさん
2007/01/19(金) 02:31:220328デフォルトの名無しさん
2007/01/19(金) 15:08:57以下のどこがおかしいのかご教示願います。
class Win32API {
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindow(
string lpClassName, // クラス名
string lpWindowName // ウィンドウ名
);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool ReadProcessMemory(
IntPtr hProcess, // プロセスのハンドル
IntPtr lpBaseAddress, // 読み取り開始アドレス
[Out] byte[] lpBuffer, // データを格納するバッファ
uint dwSize, // 読み取りたいバイト数
out uint lpNumberOfBytesRead // 読み取ったバイト数
);
}
private void button1_Click(object sender, EventArgs e) {
IntPtr hProcess;
bool CouldReadMemory = false;
byte[] lpBuffer = new byte[1];
int lpBaseAddress = 0x00400100;
uint dwSize = 1;
uint lpNumberOfBytesRead;
hProcess = Win32API.FindWindow("hoge", "hogehoge");
CouldReadMemory = Win32API.ReadProcessMemory(hProcess, (IntPtr)lpBaseAddress, lpBuffer, dwSize, out lpNumberOfBytesRead);
textBox1.Text = hProcess.ToString()+"+" + CouldReadMemory.ToString() + "+" + lpBuffer[0].ToString() + "+" + lpNumberOfBytesRead.ToString();
}
0329デフォルトの名無しさん
2007/01/19(金) 15:24:520330デフォルトの名無しさん
2007/01/19(金) 15:32:08取得できない理由を書いてませんでした。失礼しました。
エラーは出ず、falseで返ってきます。
lpBuffer[0],lpNumberOfBytesRead共に、0で返ってきます。
0331デフォルトの名無しさん
2007/01/19(金) 15:53:42プロセスハンドルじゃないぞ。
GetProcessHandleFromHwndでも使え
0332デフォルトの名無しさん
2007/01/19(金) 16:00:030333デフォルトの名無しさん
2007/01/19(金) 16:17:14そういうことでしたか。。。
ありがとうございました。
0334デフォルトの名無しさん
2007/01/19(金) 16:21:10[DllImport("Kernel32.dll")]
public static extern uint GetLastError();
0335328
2007/01/19(金) 16:41:05取得できたソース
private void button1_Click(object sender, EventArgs e) {
bool CouldReadMemory = false;
byte[] lpBuffer = new byte[1];
int lpBaseAddress = 0x016D1A64;
uint dwSize = 1;
uint lpNumberOfBytesRead;
Process[] hProcesses = Process.GetProcessesByName("GVOnline.bin");
CouldReadMemory = Win32API.ReadProcessMemory((IntPtr)hProcesses[0].Handle, (IntPtr)lpBaseAddress, lpBuffer, dwSize, out lpNumberOfBytesRead);
textBox1.Text = hProcesses[0].Handle.ToString()+"+" + CouldReadMemory.ToString() + "+" + lpBuffer[0].ToString() + "+" + lpNumberOfBytesRead.ToString();
}
これからエラー処理を書いていきます。
どうもありがとうございました。
>>334
書いておけと言われるので書きますが、正直はっきりとした内容がわかりません。。。
今からMSDN見ます。ご助言ありがとうございます。
0336デフォルトの名無しさん
2007/01/19(金) 16:47:38↓あたりで見れば、どんなエラーだったかわかる。
ttp://onegland.hp.infoseek.co.jp/wincgi/help/winerror.txt
そしたらここで聞くまでも無く原因がわかることも多いだろう。
エラーコードをメッセージにするAPIもあるけどな。
0337デフォルトの名無しさん
2007/01/19(金) 17:45:420338デフォルトの名無しさん
2007/01/19(金) 18:04:39どっちがどっちだったか分からなくなります。
エロイ方々はどうやって覚えているのか教えて下さい。
0339デフォルトの名無しさん
2007/01/19(金) 18:07:110340デフォルトの名無しさん
2007/01/19(金) 18:24:180341デフォルトの名無しさん
2007/01/19(金) 18:43:47なんでそんなしょうもないことにわざわざ用語を付けるのかと
0342デフォルトの名無しさん
2007/01/19(金) 18:47:29ソフトを作る動機として当然だろ
プロセス読み込んだり、他プロセスをフックしたり
ソフト固有のものは自分で作るしかな。
それ以外のものなら探せばいくらでもある
0343デフォルトの名無しさん
2007/01/19(金) 19:02:07二者をどうやって区別するのか知らんが勝手にそう呼んでろよ。
0344デフォルトの名無しさん
2007/01/19(金) 19:59:20APIを使うことが主な目的ならC++の方が楽じゃね?
0345デフォルトの名無しさん
2007/01/19(金) 20:07:14ListboxのSelected.Itemみたいにアイテムを選択できないですよね
配列になっているというのは分かるんですが、どうやったらいいんでしょうか?
いつもすみません。
0346デフォルトの名無しさん
2007/01/19(金) 20:27:200347デフォルトの名無しさん
2007/01/19(金) 20:52:29プロセスの取得やメモリの取得はもっと楽な方法あるのに何故?
0348デフォルトの名無しさん
2007/01/19(金) 21:01:01C#、というかプログラム初心者サンデープログラマーなんだが、
メモリの取得みたいな感じでググると、ReadProcessMemoryがいっぱいでてくるわけよ。
んで、win32APIってなんじゃ?という話になって、
それを使おうとする。だから俺も使ってるなあ、win32api。
俺はその、”もっと楽な方法”って知らない・・・
ヒントでも教えてくれればうれしいなあ。
0350デフォルトの名無しさん
2007/01/19(金) 21:22:180351デフォルトの名無しさん
2007/01/19(金) 21:23:270352347
2007/01/19(金) 21:41:120353デフォルトの名無しさん
2007/01/19(金) 22:56:230354デフォルトの名無しさん
2007/01/19(金) 23:52:55testdll.dll内のメソッドを使おうとしても
”エントリポイントが存在しません”といわれます。
そのメソッドは確かにあるのですが、なぜか存在しないと
言われます。
どのようなケースで上記エラーが起こることがあるのでしょうか?
0355デフォルトの名無しさん
2007/01/19(金) 23:58:050356デフォルトの名無しさん
2007/01/20(土) 00:16:01関数を公開させるためにはどのようにすればいいのでしょうか?
C#ではできない?のでしょうか?ネットだけでしか調べて
いませんが、DllImport[]で、中身の関数を使えると思っていました。
よろしければ教えていただけたら幸いです
0357337
2007/01/20(土) 00:26:08>ソフトを作る動機として当然だろ
それ動機なんですか…?
>>348
なるほどね。
でも、なんでプロセスとかウィンドウハンドルがどうのとかって方向なんだろ。
要するに怪しいアプリが作りたいのかw
0358デフォルトの名無しさん
2007/01/20(土) 00:30:03関数を公開するのはtestdll.dllのほうでしょ?
つーかそのdllもC#で作ってたりする?
0359デフォルトの名無しさん
2007/01/20(土) 03:28:390360デフォルトの名無しさん
2007/01/20(土) 04:57:450361デフォルトの名無しさん
2007/01/20(土) 05:31:580362デフォルトの名無しさん
2007/01/20(土) 05:32:240363デフォルトの名無しさん
2007/01/20(土) 05:47:520364デフォルトの名無しさん
2007/01/20(土) 06:44:10どうすればいいですかぁ?
0365デフォルトの名無しさん
2007/01/20(土) 08:18:310366デフォルトの名無しさん
2007/01/20(土) 12:24:150367デフォルトの名無しさん
2007/01/20(土) 13:47:36DllImportはCのDLLを使うためのもの
C#で作ったDLLは参照設定するだけで通常と全く同じように使える
0368デフォルトの名無しさん
2007/01/20(土) 20:50:38Random rnd = new Random();
rnd.NextBytes(bytes1);
byte[] bytes2 = (byte[])bytes1.Clone();
Console.WriteLine("bytes1:" + BitConverter.ToString(bytes1));
Console.WriteLine("bytes2:" + BitConverter.ToString(bytes2));
Console.WriteLine("hashofbytes1:" + bytes1.GetHashCode());
Console.WriteLine("hashofbytes2:" + bytes2.GetHashCode());
このコードで、bytes1とbytes2は内容的には同じですが違うハッシュが出力されます。
内容に応じたハッシュを算出する簡単な方法ありませんか?
CRC32あたりをC#に移植するしかないのでしょうか。
0369デフォルトの名無しさん
2007/01/20(土) 21:04:400370デフォルトの名無しさん
2007/01/20(土) 21:05:12そこまで厳密なハッシュが欲しいの?
int GetHashCode(byte[] data) {
int res = 0;
foreach(byte d in data) res ^= d;
return res;
}
これで良いやん。
0371デフォルトの名無しさん
2007/01/20(土) 21:08:11>>368
そのハッシュはあくまで byte[] オブジェクトのハッシュだからね。
Hashtable に bytes1 と bytes2 をそれぞれキーとして使った時に上書きされちゃ困るでしょ。
0372デフォルトの名無しさん
2007/01/20(土) 21:37:300373デフォルトの名無しさん
2007/01/20(土) 21:55:168 ビットじゃコリジョン大杉
0374デフォルトの名無しさん
2007/01/20(土) 22:01:320375デフォルトの名無しさん
2007/01/20(土) 22:12:06おお。恥ずかしいw
んじゃこれで。
foreach(byte d in data) res = (res << 4) ^ d;
0376デフォルトの名無しさん
2007/01/20(土) 23:37:07ソレダ
0377デフォルトの名無しさん
2007/01/21(日) 00:03:27Console.WriteLine("MD5hashofbytes1:" + BitConverter.ToInt64(System.Security.Cryptography.MD5.Create().ComputeHash(bytes1), 0).ToString());
こんなんでどうよ?
0378356
2007/01/21(日) 00:47:07dllはC#で作ったものではなくC++で作ったものです。
子の場合はC#でImportできないのでしょうか?
0379デフォルトの名無しさん
2007/01/21(日) 00:48:030380デフォルトの名無しさん
2007/01/21(日) 00:49:400381デフォルトの名無しさん
2007/01/21(日) 01:00:51C++の関数は名前が大きく変わるのでextern "C"で
C式の名前でエクスポートしたほうがいい
と、言ってます
0382デフォルトの名無しさん
2007/01/21(日) 04:03:54とりあえずDependency WalkerあたりでちゃんとしたDLLが
できてんのか確認汁。話はそれからだ
ただ、DLLの作り方とかはスレ違いだがな
0383デフォルトの名無しさん
2007/01/21(日) 14:03:440384デフォルトの名無しさん
2007/01/21(日) 14:04:590385デフォルトの名無しさん
2007/01/21(日) 18:18:26ウインドウズアプリケーションのボタンクリックで動くようにしたいんですが、
どのようにしたら良いのでしょう?
貼り付けるだけじゃだめでしたw
0386デフォルトの名無しさん
2007/01/21(日) 18:19:250387デフォルトの名無しさん
2007/01/21(日) 18:23:44実行したいコンソールアプリケーションが2つあるのです。
0388デフォルトの名無しさん
2007/01/21(日) 18:33:280389デフォルトの名無しさん
2007/01/21(日) 18:41:100390デフォルトの名無しさん
2007/01/21(日) 19:07:16ちょっとしたユーキリティっぽいものを考えてるのならDLLにしといて
コンソールなりGUIなりでフロントを作れよ
0391デフォルトの名無しさん
2007/01/21(日) 19:24:25同じフォルダにおいて、そこからの相対パスで実行すればいいじゃん。
0392デフォルトの名無しさん
2007/01/22(月) 00:03:25誰にだって理由はあんだよ
0393デフォルトの名無しさん
2007/01/22(月) 00:27:50初心者スレの理由は怪しいってのが通説
0394デフォルトの名無しさん
2007/01/22(月) 03:16:08質問します。板違いですいません。
PictureBoxの一列にフォントサイズの異なる文字を表示することは可能でしょうか?
可能ならその方法を教えていただけないでしょうか?(HTMLだと可能なのはわかるのですが。。。)
0395デフォルトの名無しさん
2007/01/22(月) 03:27:32最初でもう意味がわからん
0396デフォルトの名無しさん
2007/01/22(月) 03:27:430397デフォルトの名無しさん
2007/01/22(月) 03:29:59PictureBoxならフォントサイズも糞もない。
Imageだろ・・・
ところで.net板ってどこ?
0398デフォルトの名無しさん
2007/01/22(月) 03:30:05.NET板って何だよ
0399デフォルトの名無しさん
2007/01/22(月) 03:31:150400デフォルトの名無しさん
2007/01/22(月) 03:35:05http://pc10.2ch.net/test/read.cgi/tech/1124784480/
0401デフォルトの名無しさん
2007/01/22(月) 03:37:40PictureBoxに文字を書こうとしているが、たぶんこの先行き詰ると思うぞ。
最終的になにがしたいのか言ってみ。
0402デフォルトの名無しさん
2007/01/22(月) 11:47:50Point[] ps = {new Point(30, 500), new Point(70, 370),
new Point(290, 350), new Point(250, 190),
new Point(430, 170), new Point(330, 60), new Point(600, 70)};
こんな感じの配列を別の関数で使うためにはどうすれば良いのでしょうか?
Cでいうグローバル変数(static)みたいな機能を教えて頂けないでしょうか?
0403デフォルトの名無しさん
2007/01/22(月) 11:57:240404デフォルトの名無しさん
2007/01/22(月) 11:57:36private Point[] ps = {...};
と定義しろ。
そのクラス内の関数(メソッド)からは
this.ps
でアクセスできる。
private static Point[] ps =...
ならクラスフィールド。
クラス.ps
でアクセスできる。
0405デフォルトの名無しさん
2007/01/22(月) 12:17:59どうもです。
解決しました。
Cしか分からないのに、なんとなくでC#が組める不思議さ。
IDEは使いやすいし、C#は良いですね。
0406デフォルトの名無しさん
2007/01/22(月) 14:33:20絵を表示させたいのですが、上手くいきません。
private void Form1_Load(object sender, EventArgs e)
{
Graphics g = CreateGraphics();
SolidBrush hoge = new SolidBrush(Color.Blue);
g.FillRectangle(hoge, 100, 400, 30, 30);
g.FillRectangle(hoge, 200, 300, 30, 30);
g.FillEllipse(hoge, 10, 20, 100, 80);
}
現状、フォームが表示されても何も表示されないのですが、
どこが悪いのか分かりますでしょうか?
0407デフォルトの名無しさん
2007/01/22(月) 14:54:190408デフォルトの名無しさん
2007/01/22(月) 15:00:07そりゃ再描画しないと消えるわな
もう少しWindowsのウィンドウに関する知識をつけといた方がいいよ
対処法は>>407の通り
0409デフォルトの名無しさん
2007/01/22(月) 15:05:40Load、Shown、Paintのどれか一つだけ書いてそれぞれ実行してみるといい
0410デフォルトの名無しさん
2007/01/22(月) 16:39:23YahooとかmixiにC#プログラムで自動ログイン といった感じのプログラムを作りたいのですがアドバイスお願いします。
htmlで起動するものは見つけたのですが、"ログイン"という動作を実現したいのです。よろしくお願いします。
0411デフォルトの名無しさん
2007/01/22(月) 16:43:22昼寝しててお返事遅れました。
解決しました。
どうもありがとうございました。
0412デフォルトの名無しさん
2007/01/22(月) 17:17:23何がしたいかによる。
自分がブラウザと同じことをやるのかブラウザを操作したいのか。
自分で全部やるならhttpでどんな内容がやりとりされてるか調べて
それと同じように動作させればいい。
なんかよそでも聞いてるようだし、こんなもんで。
0413デフォルトの名無しさん
2007/01/22(月) 19:17:08pictureBox1.Left=pictureBox1.Left+2;
if (pictureBox1.Left>Width){
pictureBox1.Left=-pictureBox1.Width;
}
みたいにタイマを使ってpictureBox1を横に動かすことは出来るのですが、
これをナナメ(例えば画面の左上から右下まで)に動かすには、
pictureBox1.Left=pictureBox1.Left+2;をどうすれば良いでしょうか?
0414デフォルトの名無しさん
2007/01/22(月) 19:35:23どこがアルゴリズムだよw
0415デフォルトの名無しさん
2007/01/22(月) 19:37:29}
の位置が気になる
0416デフォルトの名無しさん
2007/01/22(月) 19:37:350417デフォルトの名無しさん
2007/01/22(月) 19:45:48速度ベクトルの向きが得られるから,それを適当に少数倍して速さを調整
それをフレーム毎に位置に足す
0418413
2007/01/22(月) 20:04:56何か参考になるサイト、有りますか?
なんとかして、ナナメに動かしたいんですけれども・・・
0419デフォルトの名無しさん
2007/01/22(月) 20:07:10LeftとTopを両方動かせば、斜めに動く。お前は頭を動かせ。
0420デフォルトの名無しさん
2007/01/22(月) 20:08:280421413
2007/01/22(月) 20:14:100422デフォルトの名無しさん
2007/01/22(月) 20:28:31if( age > 70 || age < 13 )
I.Allow( You );
else
TakeAShit( shit );
0423デフォルトの名無しさん
2007/01/22(月) 20:34:09この記法、直感的じゃない希ガス。
if (age < 13 || 70 < age)
のほうが好きだよ、おにいちゃん。
0424デフォルトの名無しさん
2007/01/22(月) 20:38:030425デフォルトの名無しさん
2007/01/22(月) 20:55:070426デフォルトの名無しさん
2007/01/22(月) 21:23:41なんで
13 < age < 70
と書けないのはなぜ?
0427デフォルトの名無しさん
2007/01/22(月) 21:25:040428デフォルトの名無しさん
2007/01/22(月) 21:29:140429デフォルトの名無しさん
2007/01/22(月) 21:40:450430394
2007/01/22(月) 23:49:27PictureBoxではなくて、ListBoxです。
質問は以下の内容です。
ListBoxの一列にフォントサイズの異なる文字を表示することは可能でしょうか?
可能ならその方法を教えていただけないでしょうか?
0431デフォルトの名無しさん
2007/01/22(月) 23:52:120432デフォルトの名無しさん
2007/01/23(火) 00:25:11>間違いました。PictureBoxではなくて、ComboBoxです。
>PictureBox:× → ComboBox:○
0433デフォルトの名無しさん
2007/01/23(火) 00:46:49暇だなお前等www
0434デフォルトの名無しさん
2007/01/23(火) 01:07:38Listitemのフォントを変えればいいじゃん
0435デフォルトの名無しさん
2007/01/23(火) 17:00:340436デフォルトの名無しさん
2007/01/23(火) 17:40:14はっきりしないうちは答えてもいいかと
0437435
2007/01/23(火) 18:40:170438デフォルトの名無しさん
2007/01/23(火) 19:18:10実装する上でどういう意図の違いで区別しているんですか?
フィールド
public string Title="";
プロパティ
public string Title{
get{return _title;}
set{_title=value;}
}
これらって同じように扱えますよね?
0439デフォルトの名無しさん
2007/01/23(火) 19:20:57プロパティにすると代入値をチェックしたり出来る。
0440439
2007/01/23(火) 19:22:17クラス外部に公開するなら、おとなしくプロパティにするのが○
0441439
2007/01/23(火) 19:24:32プロパティにすると、getとsetでスコープを分けられる。
0442デフォルトの名無しさん
2007/01/23(火) 19:25:59問答無用でpublicフィールドは使うな
0443デフォルトの名無しさん
2007/01/23(火) 19:29:51それがなぜかがわからないんです
プロパティに値を代入するクラスのほうで
たとえば、タイトルが空白であるかどうかのチェックを書けばいいだけではないでしょうか?
プロパティ側でチェックしたって、空白の場合どうすればいいかまでの記述なんてのは
書かないわけだし、プロパティ側でエラーが出たからってどうなの?って感じなんです
>>441
値を取得するだけで、値は設定させたくないって時に使うもの?
0444デフォルトの名無しさん
2007/01/23(火) 19:31:24static readonlyなフィールドぐらい使わせてくれ
0445デフォルトの名無しさん
2007/01/23(火) 19:32:14値型はPublicフィールド直の例もみるね。
0446439
2007/01/23(火) 19:35:31「値をセットするほうがチェックする」って考え方がダメなのヨ。
そこにセットできる値の条件を知ってるのは、そのプロパティを持ったクラスだから。
>値を取得するだけで、値は設定させたくないって時に使うもの?
そうだヨ
0447デフォルトの名無しさん
2007/01/23(火) 19:36:19> たとえば、タイトルが空白であるかどうかのチェックを書けばいいだけではないでしょうか?
その理屈で言えばクラスのメソッドは不要
もっと言えばクラス自体不要
0448デフォルトの名無しさん
2007/01/23(火) 19:36:410449デフォルトの名無しさん
2007/01/23(火) 19:38:29でもある程度の規模のクラスでそういうのが出てくるのは設計が悪いと思う。
0450デフォルトの名無しさん
2007/01/23(火) 19:41:10http://msdn2.microsoft.com/ja-jp/library/ms229057(VS.80).aspx
0451438
2007/01/23(火) 19:43:14必ず値が必要なわけですから、値は必ず必要ですよというのを
わかり易くするために、プロパティとそのチェックコードを記述するってことなんでしょうか?
>>446
> そこにセットできる値の条件を知ってるのは、そのプロパティを持ったクラスだから。
そのにセットできる値の条件を知っているのはプログラマである私だから。
って考えでやるのはダメってことなのかな?
わかるならそれでいいんじゃね?って返答がきそうですけど
後で見返した場合わかり易くするために、説明書きを長々と書いているってことなのかな?
それなら、コメント文つけておけば済む話だし・。。
いまいちよくわからない。
>>447
そう言われると設計自体おかしいのかな?と思ってきてしまいます
でも、プロパティとフィールドの違いがわからないと先に進めない気がするので
0452デフォルトの名無しさん
2007/01/23(火) 19:47:00人間は不注意な生き物であるが、コンパイラはミスを犯さない
コンパイラに理解できる形(ex. アクセス修飾子)で書いておけば、
人間が間違えたとしてもコンパイラが止めてくれる
0453439
2007/01/23(火) 19:47:47それは全ての変数を object 型にして「なにが入ってるのかは私がわかってる」なんて言うようなもんだヨ
0454デフォルトの名無しさん
2007/01/23(火) 19:49:02private string text;
public string Text{get{retrn text;}}
これを,
private string List<string> text;
private string Text{get{return text[0];
0455438
2007/01/23(火) 19:49:16問答無用でプロパティを使えってことですか
そういうもんだって理屈抜きに覚えろってことなのかな・・・
でも、パブリックな変数が増えてくると、何の意味もなく
プロパティをだらだら記述するのがすごく無駄な気がするんですよね
これって理由がほしい。
0457デフォルトの名無しさん
2007/01/23(火) 19:55:25そのうちありがたみが身にしみて分かるようになるよ。
0458438
2007/01/23(火) 20:01:08コンパイラでも、Titleに代入されるのが空白かどうかまではわからないんじゃないでしょうか?
実行後に任意の値が代入されるわけだし、
stringにintを代入してエラーなんてのは、プロパティじゃなくてもフィールドでもコンパイラエラーが出るわけだし
>>453
そう言われると、オブジェクト指向についてまだ理解が足りてないと反省。
それぞれのクラスは他人みたいな感じでちゃんとそれぞれが独自に機能するように
作らないとだめってことなんですね。
で、自分でそれぞれのクラスを記述しているのに、自分の記憶にフィルタかけて
隠蔽化するなんて難しいな。中身を知ってしまっているんだから
長くプログラムやってないとこういう理屈は身につかないのかなぁ
>>456
なるほどーそういう使い方もあるんですね
一例がほしいんですけど、Titleというプロパティには
空白だけの文字列は代入されてはいけないって場合の記述を
みなさんならどうやって書きますか?
0459デフォルトの名無しさん
2007/01/23(火) 20:02:12>問答無用でプロパティを使えってことですか
必要性感じないなら、フィールドでいいじゃない?
MS提供のクラスを見ると、外部に公開する物は、プロパティを使用しているみたいだけど、
一切変更しないなら別にフィールドでいいとおもう。
プロパティは外部への見せ方と内部に保持しているものを変えるためのもの。
例えば、DateTime でTickとかあるけど、Tickに相当する物を内部で保持して、
それをもとに年月日時分秒を渡したり、同様に長さに対しては、内部保持は一つだけど、
外部には色々な単位の受渡をすることも出来る。
あとは、インターフェースと同様に、外へ公開する仕様と、内部での状態に、
壁を作っておいて、後々変更が可能にしておくって考えがある。
自分が理解してるのは上記2つ。
0460439
2007/01/23(火) 20:02:26理由が欲しいって感覚は正しいと思う。
メンバへのアクセス方法の統一化
→public変数では都合の悪い場合だけプロパティ化することの不統一感
自分一人で趣味のプログラムしてるんだったら、自分が不満を感じるまで
そのままやっててもいいかもしれない。
0461デフォルトの名無しさん
2007/01/23(火) 20:05:240462デフォルトの名無しさん
2007/01/23(火) 20:08:330463デフォルトの名無しさん
2007/01/23(火) 20:09:420464438
2007/01/23(火) 20:22:02なんとなくわかってきたような気がする
今まではクラスの実装を変更したらそれに関連するクラスを
全て変更してたけど、代入する値と返す値だけは変更させなければ
それぞれ独立してバージョンアップできるわけですね
まとめ
・メンバへのアクセス方法の統一化
・あとは、インターフェースと同様に、外へ公開する仕様と、内部での状態に、
壁を作っておいて、後々変更が可能にしておくって考えがある。
・プロパティは外部への見せ方と内部に保持しているものを変えるためのもの
・>>456
・「値をセットするほうがチェックする」って考え方がダメなのヨ。
そこにセットできる値の条件を知ってるのは、そのプロパティを持ったクラスだから
みなさまどうもありがとうございました。
今作ってるプログラムを大幅に変更することになりそうです
楽しくて仕方がありません
0465デフォルトの名無しさん
2007/01/23(火) 20:40:34Get/Set付きのプロパティに変更されていたのを思い出した。
こうしないとリモート呼び出しやら、COM+やAOPのように呼び出しを
インフラがインターセプトする場合に都合が悪い。
0466デフォルトの名無しさん
2007/01/23(火) 20:41:12素直なやつだな…
0467デフォルトの名無しさん
2007/01/23(火) 20:55:00>パブリック フィールドとプロテクト フィールドは適切にバージョン管理されず、
>またコード アクセス セキュリティ要求によって保護されません。
だから >>465 のこの辺にかかわってくるわけだ。
>こうしないとリモート呼び出しやら、COM+やAOPのように呼び出しを
>インフラがインターセプトする場合に都合が悪い。
0468デフォルトの名無しさん
2007/01/23(火) 21:07:440469デフォルトの名無しさん
2007/01/23(火) 21:14:430471デフォルトの名無しさん
2007/01/23(火) 21:33:35それはCOMにフィールドって概念がないだけでしょ
0472デフォルトの名無しさん
2007/01/24(水) 00:25:400473デフォルトの名無しさん
2007/01/24(水) 01:01:480474デフォルトの名無しさん
2007/01/24(水) 01:58:220475デフォルトの名無しさん
2007/01/24(水) 02:01:390476デフォルトの名無しさん
2007/01/24(水) 02:08:41もう少し詳しく
0477デフォルトの名無しさん
2007/01/24(水) 02:15:02プログラムで指定されたURLをIEで開くにはどうしたら良いですか?
0478デフォルトの名無しさん
2007/01/24(水) 02:19:280479デフォルトの名無しさん
2007/01/24(水) 02:22:24ちょっとこいよ
0480デフォルトの名無しさん
2007/01/24(水) 05:36:54具体的には、プラグイン機能に近い、外部DLL内の関数をCall出来るソフトウェアがあるので、
そのソフトウェア向けにC#で作ったDLLを呼ばせたいのですが、
.netの事やmanagedDLLの事は当然の如く想定してないと思われるので…。
ちなみに、DLLの仕様はextern "C" __declspec(dllexport) void Function();だそうです。
0481デフォルトの名無しさん
2007/01/24(水) 07:26:310482デフォルトの名無しさん
2007/01/24(水) 09:51:37>>481
どこが初心者スレなんだよ
内容が難しすぎる
もっとわかり易い質問よろ
0483デフォルトの名無しさん
2007/01/24(水) 11:02:54PadLeftメソッドを使用しますが、所謂「全角文字」が入っている場合も1文字とし
て処理されてしまいますよね。(Unicodeが関係しているからだと思いますが…)
「全角文字」を「半角文字」2文字分として半角空白の挿入を処理したい場合どの
ようにするのでしょうか?
今考えているのは文字列を一度S-JISとしてbyte[]に変換し、指定した要素数
「半角空白」にあたる値を入れたの別のbyte[]に後ろから値をコピーしていく方法
なのですが、もっとすっきり実行できるよく使われる方法はあるでしょうか?
0484デフォルトの名無しさん
2007/01/24(水) 12:00:360485デフォルトの名無しさん
2007/01/24(水) 12:47:08C++/CLI
0486デフォルトの名無しさん
2007/01/24(水) 13:04:30自分以外のアプリケーションウインドウのタイトル文字列を取得したいのですが
どうしたらいいのか分かりません。
お願いします
0487デフォルトの名無しさん
2007/01/24(水) 13:25:05.NETのクラスライブラリにはないから P/Invokeを使え。
Win32APIのEnumWindows、GetWindowText このあたり。
0488デフォルトの名無しさん
2007/01/24(水) 14:19:09ありがとうございます。ぐぐってみますね
0489デフォルトの名無しさん
2007/01/24(水) 16:26:031. COM Interopを用いてラッパDLLを書く
2. CLRホスティングを用いてラッパDLLを書く
3. 逆P/Invoke
0490デフォルトの名無しさん
2007/01/24(水) 16:41:19namespace hoge
{
0491490
2007/01/24(水) 16:49:38プロジェクトA
namespace hoge
{
class test1
{
private const string a = "2ch";
}
}
プロジェクトB
namespace huga
{
class test2
{
private const string a = "2ch";
}
}
となっていて、Visual C# 2005 Express Editionを用いてA・Bのプロジェクトをひとつのソリューションで管理しています。
それぞれ名前空間が異なるクラス、test1とtest2内にまったく同じconst string aがあります(どちらも必要)。現状では片方の文章のを変更するともう片方も変更しなくてはなりません。
どこかにconst string aをおいて、test1とtest2から参照する方法などありますか?どうにかして変更を1箇所で済ませたいのです。
0492デフォルトの名無しさん
2007/01/24(水) 16:54:05あと,そういうときはconstじゃなくてstatic readonlyを使え
0493デフォルトの名無しさん
2007/01/24(水) 16:55:06class test1{
public static readonly string a = "2ch";
//public const string a = "2ch";
}
}
普通にpublicにしておけばいいんじゃないの?
あとで変更される可能性のある定数はconstではなくstatic readonlyにする
http://msdn2.microsoft.com/ja-jp/library/ms229057(VS.80).aspx
0494492
2007/01/24(水) 16:59:21できました!!
ありがとうございます。
>493
static readonlyですね、ありがとうございます。勉強になりました。
0495デフォルトの名無しさん
2007/01/24(水) 19:59:27よろしくお願いします。
通常はVS2005Proを VB主体モードで使っています。
そこであるサイトからダウンロードしたC#で作られた.NETコントロールを
使ってみていました。ところがそこでちょっとした不都合があり、その
コントロールの中のソースにブレークポイントを置いて調べないと
わからないことが出てきました。
そこで、いつもやっているように、そのソースの中にブレークポイントを
置いてデバッグを開始してみたところ、そのコントロールのコンストラクタ
の中にブレークポイントを置いても、ブレークせず、どうもこのロール内の
ブレークはすべて無視されているようでした。
VBとC#を両方で使うとC#でのブレークポイントは無視されるのか、
あるいは何かオプションの設定でどちらでもブレークポイントが有効になる
のか、などコントロールのC#ソースコードをデバッグする方法を知りたく
思います。すみませんが、これについて教えてください。よろしくお願いします。
0496デフォルトの名無しさん
2007/01/24(水) 20:13:44それで、今やってみてわかったことですが、、
C#だけのアプリケーションの状態でやっても、そのコントロールを使う方の側の
FormのコンストラクタやForm_Load()でもブレークポイントがヒットしませんでした。
なので、VBとの混用によるものではありませんでした。
で、そのブレークポイントのところにマウスを持っていくと、
「このブレークポイントは現在の設定ではヒットしません。
このドキュメントのシンボルが読み込まれていません。」
というメッセージが現われました。
これはどういった設定をしたら解決できるでしょうか?
VBですと、特にシンボルを読み込むとかといったことを意識しないでも
デバッグモードではどのソースにおいたブレークポイントもヒットしていました。
C#では条件が異なるのでしょうか?
よろしくお願いします。
0497デフォルトの名無しさん
2007/01/24(水) 20:16:010498デフォルトの名無しさん
2007/01/24(水) 20:38:23さっそく助かります、どうもです。
それで今、この元々のC#のスタートアッププロジェクトのプロパティを見たところ、
なんと全項目がアクセス不能(ディスエイブル)になっていました。
これはこのコントロールの作者と異なる人は触れないようになっているということ
でしょうか、こういうのは初めて見る状況でした
0499デフォルトの名無しさん
2007/01/24(水) 20:40:16・・・と思ったら、すみません、あわててデバッグ途中のものを見ていました orz
すみません
0500デフォルトの名無しさん
2007/01/24(水) 20:44:41有り難う御座いましたー。そこらへんでやってみます。
0501デフォルトの名無しさん
2007/01/24(水) 20:49:21改めて見比べてみますと、プロジェクトのプロパティについては、
こちらで筆をいれたことはありませんでしたが、VBとは項目が
同じというわけではないのですね。
先の 「このドキュメントのシンボルが読み込まれていません」
ということの意味がわかりませんでした。どのあたりを見れば
わかるでしょう?
0502デフォルトの名無しさん
2007/01/24(水) 21:00:40ビルド→出力→詳細設定→出力→デバッグ情報→full
0503デフォルトの名無しさん
2007/01/24(水) 21:03:23いけない、という感じでしたが、ダウンロードしたC#のソースにはこの .pdbという
拡張子のファイルは含まれていませんでした。
もしかしてこの .pdb という拡張子のファイルは、VB専用のファイルなのでしょうか
だとすると、VS2005の環境をC#に最適化した状態にしないと、C#用のシンボルファイル
なるものが読み込まれない、といった感じなのでしょうか・・・・
VB用に最適化したVS2005を、C#用に最適化する方法はどこかにありましたっけ?
0504デフォルトの名無しさん
2007/01/24(水) 21:04:31あ、すいません、かぶりました。
その設定ですか、わかりました、今すぐやってみます。
0505デフォルトの名無しさん
2007/01/24(水) 21:05:080506デフォルトの名無しさん
2007/01/24(水) 21:14:04出ました、それでした、助かりました。
C#の開発環境はVBのそれとはだいぶ違うということが
これでわかりました。この次からはもう少しC#の関係を勉強して
からやってみます。
教えて頂いたおかげで、深い穴から脱却できました、
ありがとうございました!
0507デフォルトの名無しさん
2007/01/24(水) 21:18:14そうだったんですね、いま見ていたのが、bin\debugフォルダーでしたが、
こちらにはファイルが何もなく、bin\releaseフォルダーにはVB同様に
できていました
どうもC#ではbin\debugというフォルダーは使用されないかもしれないのですね、
それもわからずあわてていました、ありがとうございました。
0508デフォルトの名無しさん
2007/01/24(水) 21:54:10あんまり短絡的に判断するな。
0509デフォルトの名無しさん
2007/01/24(水) 22:11:57インスト直後だと設定が隠れてるから
ツール→オプションで「すべての設定を表示」にチェックした後
プロジェクトおよびソリューションの「ビルド構成の詳細を表示」をチェック
それでやっとビルドの所に構成マネージャが出るからそれで
debugビルドとreleaseビルド選択できる
何でわざわざこんなにわかりずらい所にあるんだろうなw
0510デフォルトの名無しさん
2007/01/24(水) 22:18:580511デフォルトの名無しさん
2007/01/24(水) 22:24:13EE使いか?
0512デフォルトの名無しさん
2007/01/24(水) 22:36:32Process.GetProcesses () でプロセスとって、
Process.MainWindowTitle プロパティじゃだめかな?
0513デフォルトの名無しさん
2007/01/24(水) 22:39:44とあるところで「BandObjects」というクラスライブラリを見つけ、
ツールバーを作ってみようと思ったのですが、
Visual C# 2005 Express Editionで開いた後、dllへのビルドが出来ません。
エラーには「アセンブリの生成に失敗しました」とあります。
C#はまだよくわからないのですが、Visual C# 2005 Express Editionではビルド出来ないのでしょうか。
0514デフォルトの名無しさん
2007/01/24(水) 22:52:350515デフォルトの名無しさん
2007/01/24(水) 22:53:09タスクマネージャのアプリケーションタブに表示されるものだけしか取れない
0516デフォルトの名無しさん
2007/01/24(水) 23:28:210517デフォルトの名無しさん
2007/01/24(水) 23:29:530518デフォルトの名無しさん
2007/01/25(木) 00:11:54パケット情報取得したり、偽装したり、フックしたりすることって
C#でできるの?
0519デフォルトの名無しさん
2007/01/25(木) 00:18:44>Visual C# 2005 Express Editionではビルド出来ないのでしょうか
いいえ。
おれ作ってるよ
0520デフォルトの名無しさん
2007/01/25(木) 00:55:09お前には無理
0521デフォルトの名無しさん
2007/01/25(木) 01:38:58おれじゃなくてC#がやるの
0522デフォルトの名無しさん
2007/01/25(木) 01:52:460523デフォルトの名無しさん
2007/01/25(木) 02:03:07プロジェクトのプロパティでIDとか入れないといけないのが気になるんですけど
0524デフォルトの名無しさん
2007/01/25(木) 02:04:560525デフォルトの名無しさん
2007/01/25(木) 03:03:34お前にはウィルスなんて作れないから気にするな
0526486
2007/01/25(木) 03:40:37度々スマンですがウィンドウタイトルは無事取得できました!
で、今度はウインドウのクラス?名を取得したいのですが
どなたかご存知?
お願いします
0527デフォルトの名無しさん
2007/01/25(木) 03:44:08ありがとうございます
一応私は
using System.Runtime.InteropServices ; // for DllImport
using System.Text ; // for StringBuilder
[DllImport("user32.dll")]
extern static IntPtr GetForegroundWindow() ;
[DllImport("user32.dll")]
extern static int GetWindowText(IntPtr hWnd, StringBuilder lpStr, int nMaxCount) ;
private void timer1_Tick(object sender, System.EventArgs e)
{
StringBuilder sb = new StringBuilder(200) ;
IntPtr hwnd = GetForegroundWindow() ;
GetWindowText(hwnd, sb, sb.Capacity) ;
textBox1.Text = sb.ToString() ;
}
でやりました
0528デフォルトの名無しさん
2007/01/25(木) 03:54:420529デフォルトの名無しさん
2007/01/25(木) 04:04:52ありがとうございます!
さっそくぐぐってきます
0530デフォルトの名無しさん
2007/01/25(木) 05:35:12おれじゃなくてC#がやるの
0531デフォルトの名無しさん
2007/01/25(木) 08:14:35→035
↓304
540
のようなグラフが有って、
int[][] hoge = new int[3][3];
みたいな配列を作って、
hoge [0] [0] = 0
hoge [0] [1] = 3
hoge [0] [2] = 5
hoge [1] [0] = 3
hoge [1] [1] = 0
hoge [1] [2] = 4
hoge [2] [0] = 5
hoge [2] [1] = 4
hoge [2] [2] = 0
と代入した後、これを以下↓
hoge [0] [0] = 0
hoge [0] [1] = 5
hoge [1] [0] = 3
hoge [1] [1] = 4
hoge [2] [0] = 5
hoge [2] [1] = 0
のように変更させたい場合、どうすればよいのでしょうか。
0532デフォルトの名無しさん
2007/01/25(木) 08:29:37マウスイベントとかキーボードイベントしかないんですけど
0533デフォルトの名無しさん
2007/01/25(木) 08:31:280534デフォルトの名無しさん
2007/01/25(木) 09:31:06ttp://kadankai.hp.infoseek.co.jp/html/shiraishiakira/csmdx_index.html
他にはSDL.NET使うとかすれば良いんじゃない?
0535デフォルトの名無しさん
2007/01/25(木) 09:46:36ローカル実行であぼん!
0536デフォルトの名無しさん
2007/01/25(木) 11:03:07int[][] hoge = new int[3][];
hoge[0] = new int[]{ 0, 5, 3 };
ジャグ配列
でぐぐれ
0537デフォルトの名無しさん
2007/01/25(木) 11:34:40hoge.AddRange()
ってやりたい
0538デフォルトの名無しさん
2007/01/25(木) 14:45:40トンクスです!
0539デフォルトの名無しさん
2007/01/25(木) 17:52:28おや…。自分のやり方が間違ってるんでしょうかね、
ちょっと調べてみます。
0540デフォルトの名無しさん
2007/01/25(木) 17:56:20List<>つかっとけ
0541デフォルトの名無しさん
2007/01/25(木) 18:51:28a[0],a[1],a[2],a[3]
全てに一定の処理をしたいとき
for(i=0;i<4;i++){
何か a[i]
}
とするとして、
もし事情によりa[2]のときだけ処理をしたくないときは、
for文の条件式をどのように書けばスマートにいくでしょうか?
(a[0],a[1],a[3]に処理をしたい)
0542デフォルトの名無しさん
2007/01/25(木) 19:00:12if (i == 2) { continue; }
0543デフォルトの名無しさん
2007/01/25(木) 19:12:11www
0544デフォルトの名無しさん
2007/01/25(木) 21:41:14C#でどう実現すればいいでしょうか
byte[] ar = new byte[100]; //これの50以降を使いたい
func(???);
C言語なら
char ar[100];
func(&ar[50]);
とか可能なんですが・・
部分的にコピーするか、参照開始のインデクスを一緒に関数に渡すしか無いですかね?
func(ar,50);みたいに
0545デフォルトの名無しさん
2007/01/25(木) 21:44:55そうするしかない。
0546デフォルトの名無しさん
2007/01/25(木) 23:28:27ジェネリックとインデクサを使って配列をラップするクラスを作れば?
0547デフォルトの名無しさん
2007/01/25(木) 23:33:07「作れば?」って質問わかってる?
0548デフォルトの名無しさん
2007/01/25(木) 23:34:17どうしてもコピーしたくなければポインタ使えよ
0549デフォルトの名無しさん
2007/01/25(木) 23:58:01C#の意味ないんだよな
0550デフォルトの名無しさん
2007/01/26(金) 00:16:57IListの実装しだいでいくらでも対応できるよ
0551デフォルトの名無しさん
2007/01/26(金) 02:14:24n=10のときは何もせず、n=11のときにn=10で取得するはずだった
dataViewを取得したいのですが、どのようにすればよいか教えてください。
int n = 0;
foreach(DataRowView dataRowView in dataView)
{
n++;
if(n == 10)
{
処理A
}
処理B
}
0552デフォルトの名無しさん
2007/01/26(金) 02:17:440553デフォルトの名無しさん
2007/01/26(金) 02:41:58質問とソースが微妙に意味不明…
n=10のときに何もせず…って処理Aしてるじゃないかw
n=11のときに「n=10で取得するはずだった」ってn++なんだから取得してるに決まってるだろw
で
DataRowView dataRowView10;
int n = 0;
foreach(DataRowView dataRowView in dataView)
{
if (n == 10)
{
dataRowView10 = dataRowView;
処理A
}
else if (n == 11)
{
MessageBox.Show(dataRowView10.ToString());
}
処理B
}
ホントにこんなのでいいのかよ・・・
0554デフォルトの名無しさん
2007/01/26(金) 03:15:22俺はそれを書こうとして吐き気がしたから止めた。
0555デフォルトの名無しさん
2007/01/26(金) 05:48:03とりあえずpictureBox1に画像を表示させたいのですが、
うまくいきません。
フォームに何も表示されない状態です。
コンパイルは通るのですが・・・
timer1はtrueになっています。
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
g = Graphics.FromImage(pictureBox1.Image);
Random rnd = new Random();
score = 0;
}
private void timer1_Tick(object sender, System.EventArgs e)
{
g.Clear(Color.FromArgb(0, 0, 0));
score = score + 1;
g.DrawString("SCORE:" + score, new Font("MS明朝", 12), new SolidBrush(Color.FromArgb(255, 255, 0)), 0, 0);
pictureBox1.Invalidate();
}
どなたか原因の分かる方、いらっしゃいますでしょうか?
0556555
2007/01/26(金) 06:17:110557デフォルトの名無しさん
2007/01/26(金) 06:25:39してないです!
0558デフォルトの名無しさん
2007/01/26(金) 07:32:05意味分かってコード書いてる?
WindowsのGUI周りの仕組みについてちゃんと勉強してきてね
0559デフォルトの名無しさん
2007/01/26(金) 07:34:130560デフォルトの名無しさん
2007/01/26(金) 09:38:02C#
画像表示
まずは、この検索結果サイトを見て理解してみては?
0561デフォルトの名無しさん
2007/01/26(金) 10:05:490562555
2007/01/26(金) 10:13:51もう来ません
0563デフォルトの名無しさん
2007/01/26(金) 12:54:06ガンガン出鱈目を書いて、「動きません」ってのは始めて見た。
前者よりマシだけど、プログラムよりも先に勉強の仕方を勉強するべきだな。
0564デフォルトの名無しさん
2007/01/26(金) 13:03:13C++とC#の違いは
後者はコンパイル後のEXEを実行するのに、Microsoft .NET Framework が
必要だけど、前者は必要ないって理解であっていますか?
0565デフォルトの名無しさん
2007/01/26(金) 13:10:46文法からして違う 別言語でしょ
0566デフォルトの名無しさん
2007/01/26(金) 13:14:38あああ、すいません。
文法というより、実行環境の違いの1つということで。
0567デフォルトの名無しさん
2007/01/26(金) 13:17:32C#のexeはmonoでも動く(GUI系は怪しいけど)
0568デフォルトの名無しさん
2007/01/26(金) 14:14:07テストだと0点だな
0569デフォルトの名無しさん
2007/01/26(金) 14:27:37するプログラムを作成せよ。ただし、アルファベット以外の文字はそのまま
表示すること。
0570デフォルトの名無しさん
2007/01/26(金) 14:59:27string text = "four score and seven years ago";
string result = System.Text.RegularExpressions.Regex.Replace(text, @"\w+",
new MatchEvaluator(this.CapText));
public string CapText(Match m)
{
string x = m.ToString();
if (char.IsLower(x[0]))
{
return char.ToUpper(x[0]) + x.Substring(1, x.Length - 1);
}
return x;
}
0571デフォルトの名無しさん
2007/01/26(金) 15:09:21VBいらん気がするんだが
0572デフォルトの名無しさん
2007/01/26(金) 15:12:410573デフォルトの名無しさん
2007/01/26(金) 15:13:33if (s.Length == 1)
return Char.ToUpper(s[0]).ToString();
return String.Format("{0}{1}",
Char.ToUpper(s[0]),
s.SubString(1).ToLower());
0574デフォルトの名無しさん
2007/01/26(金) 16:05:360575デフォルトの名無しさん
2007/01/26(金) 16:46:56できる
0576デフォルトの名無しさん
2007/01/26(金) 17:10:10項目が選択された状態にしておきたいんです
もちろんフォーカスが別に移っても選択状態にしておくの方法はわかりますが
それだと、選択色が反転してしまうので
0577デフォルトの名無しさん
2007/01/26(金) 18:17:14つまりフォーカスを失っても選択部分が「強調表示の色」のままに
なるようにしたい、ってこと?
0578576
2007/01/26(金) 18:22:29そうです。見せかけでもいいので、選択色が変わらないようにしたいんです
よくソフトでコンボボックスとかに検索文字を
入力しててもリストの選択状態は変わらなかったりするじゃないですか
そういうことをしたいわけです
0579デフォルトの名無しさん
2007/01/26(金) 18:24:52そういう設定ができないならオーナードローでいいじゃん
0580デフォルトの名無しさん
2007/01/26(金) 18:26:370581576
2007/01/26(金) 18:28:43>フォーカスが無いことを明示しないのはいただけない
そう言われればそうですね。
ユーザーが項目が選択されてるから削除しようとDelキーを押しても
実際のフォーカスはコンボボックスにあって、そっちが消えてしまうと
意図しない状況になるかもしれないですね。
ってことで、解決しました。
ありがとう
0582デフォルトの名無しさん
2007/01/26(金) 20:30:59そう言わずにちょっと聞いてくれ。
Winodwsアプリケーションの場合、別アプリのウィンドウが重なって
消えてしまった領域を再度描画するのは、その消えた方の仕事なわけだ。
ようは自分のウィンドウの描画は自分が描く。
基本的にはOSが再描画してくれるわけじゃない。
で、重なっていたウィンドウが移動したり、自分のアプリが最前面に出たり
するタイミングでOSが「今描いてね」って教えてくれる。
それが Paint イベントなんだわな。
だから普通はウィンドウに描画するロジックはココに書く。
で、OSの連絡に関係なく自分の思ったタイミングで描画する場合は、
自分のウィンドウに対して「今描いてね」ってメッセージを送ってもらうように
OSにお願いするわけ。
例えばInvalidate()メソッドとかで。
オレは昔、DOSからWindowsアプリへ移行する際に、コレを聞いて前が開けた。
がんばれ。
0583デフォルトの名無しさん
2007/01/26(金) 21:04:27listView1.ItemActivate += new EventHandler(ListView1_ItemActivate);
private void ListView1_ItemActivate(object sender, EventArgs e)
{
ListView lv = (ListView) sender;
MessageBox.Show(???);
}
としたとき、???の部分にその行の情報に記載されている内容をぶちこみたいときは
どのようにしてやればよろしいでしょうか?
0584デフォルトの名無しさん
2007/01/26(金) 21:16:10それくらい自分で調べようぜ
MSDNのItemActivateの項目に書いてあるよ
0585デフォルトの名無しさん
2007/01/26(金) 22:09:24ListView.HideSelection プロパティ
0586デフォルトの名無しさん
2007/01/26(金) 22:22:30それは知ってるって >>575 に書いてあるように見えるが
0587デフォルトの名無しさん
2007/01/26(金) 22:23:19正 >>576
0588デフォルトの名無しさん
2007/01/27(土) 00:59:53C#の勉強で参考になるサイトや書籍が他にあったら教えて下さい。
0589デフォルトの名無しさん
2007/01/27(土) 01:03:05.NET のライブラリは膨大だけど
0590デフォルトの名無しさん
2007/01/27(土) 01:06:38>>3
本ならちょっとふるいけど↓
2.0対応の良書は知らない
C#によるプログラミングWindows 上・下 (本格的)
Visual C#.NET逆引き大全 500の極意 (初心者向きで手軽)
0591デフォルトの名無しさん
2007/01/27(土) 01:13:54framework2.0 はインストールされましたがSDKはされませんでした。(入っていない?)
それでも普通にビルドできるんですが、frameworkのSDKはどんなときに必要になるんでしょうか?
(ただのframeworkってランタイムみたいなものですよね?)
0592デフォルトの名無しさん
2007/01/27(土) 01:21:39エディタでコード書いて、厳密に署名されたキーを作ったり
タイプライブラリをインボートしたりするときに使う
VisualC#Expressインスコしたら入らないか?
0593デフォルトの名無しさん
2007/01/27(土) 01:21:560594デフォルトの名無しさん
2007/01/27(土) 01:34:10アプリケーションの追加と削除を見ると
.net framework2.0
.net framework2.0 日本語pack
VisualC# express
となっているので、SDKは無いようにみえるのですが、実は入っているのかな?
入っているか見分ける方法とかありますでしょうか?
0595デフォルトの名無しさん
2007/01/27(土) 01:43:44C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
ってフォルダない?
つーかVSあれば.net SDKいらないよ
むしろWindows SDKが必要
0596デフォルトの名無しさん
2007/01/27(土) 01:46:06%windir%\Microsoft.NET\SDK\v2.0\Bin に
sn.exe とか wsdl.exe とか sgen.exe とか ildasm.exe とか gacutil.exe とか AxImp.exe とか resgen.exe とか
0597デフォルトの名無しさん
2007/01/27(土) 01:47:070598デフォルトの名無しさん
2007/01/27(土) 01:48:17それでもライブラリが豊富で深い所まで踏み込めるし
0599デフォルトの名無しさん
2007/01/27(土) 07:24:19VC#Expressだけだとヘルプの.net Frameworkクラスライブラリの項目に
Microsoft.*、 System.Runtime.*がないから
.NET Framework SDKもインストしないとだめ
0600デフォルトの名無しさん
2007/01/27(土) 10:20:13ttp://ufcpp.net/study/csharp/
この辺とかかな。
0601デフォルトの名無しさん
2007/01/27(土) 12:09:59Label labelA..Text
Label labelB..Text
Label labelC..Text
を
string[] DDD = new string[3]
なんて配列にポインター割り当てみたいな方法ありますか?
DDD[0]になんか書くと labelA..Textに値が入る
DDD[1]になんか書くと labelB..Textに値が入る
DDD[2]になんか書くと labelC..Textに値が入る
みたいな
0602デフォルトの名無しさん
2007/01/27(土) 12:19:23プロパティは一見フィールドだけど実体はメソッド呼び出しだし
0603デフォルトの名無しさん
2007/01/27(土) 12:23:00Label [] DDD = new Label[] { labelA, labelB, labelC };
DDD[0].Text = "xxxxx";
0604デフォルトの名無しさん
2007/01/27(土) 12:34:58面倒だけど
0605601
2007/01/27(土) 12:38:46ありがと
ログみてたら違う方法もあるのね、同じ事思う人いると思うんでかいとくね
private List<Label> ddd = new List<Label>();
ddd.Add(labelA);
ddd.Add(labelB);
ddd.Add(labelC);
ddd[0].Text = "AAA"; //LabelA.Text = "AAA";
ddd[1].Text = "BBB"; //LabelB.Text = "BBB";
ddd[2].Text = "CCC"; //LabelC.Text = "CCC";
0606デフォルトの名無しさん
2007/01/27(土) 12:52:170607デフォルトの名無しさん
2007/01/27(土) 14:00:03C++でも、その考えたはバグの温床なので改めたほうがいいよ。
メモリリークや開放された領域のアクセスしたり…
c#やJavaはそういう感じにならないように出来てる。
0608601
2007/01/27(土) 14:48:02そうでつね
目的としては配列として扱いたいだけで
なにが何でもポインターアドレスを配列変数にひっつけたい訳じゃないっす
0609デフォルトの名無しさん
2007/01/27(土) 15:54:36Image中の絵を消すのに消しゴムツールを作りたいのですが、
どのように作成すればいいのでしょうか?
自前で白く塗りつぶしてColorMapとか使って透明にしないといけないのでしょうか?
0610デフォルトの名無しさん
2007/01/27(土) 16:10:200611デフォルトの名無しさん
2007/01/27(土) 16:17:330612609
2007/01/27(土) 16:22:490613デフォルトの名無しさん
2007/01/27(土) 16:27:04透明色は関係ないよ。
レイヤー別にするなら別だけどな
あとアルファー0で塗りつぶしにしたら何もしてないのと同じだと思うが…
0614609
2007/01/27(土) 16:28:15CompositingMode.SourceCopyやCompositingMode.SourceOverを
指定してからアルファ値0で塗ってみましたがこれでもだめでした。
0615デフォルトの名無しさん
2007/01/27(土) 16:29:200617デフォルトの名無しさん
2007/01/27(土) 17:04:48Maxlength×[1文字分の幅]によって設定したいと思っていますが、
テキストボックスの[1文字分の幅]はどのように取得できますか?
またはもっと一般的なWidthの設定方法があれば教えてほしいのです。
環境はVS2005です。おねがいします。
0618デフォルトの名無しさん
2007/01/27(土) 17:05:15それが普通だよw
0619デフォルトの名無しさん
2007/01/27(土) 17:06:06その前にプロポーショナルフォントって知ってる?
0620デフォルトの名無しさん
2007/01/27(土) 17:08:480621デフォルトの名無しさん
2007/01/27(土) 17:13:10そのWidthのつづりを見て幅は一様じゃないと気付かないのか?
0622デフォルトの名無しさん
2007/01/27(土) 17:49:51固定値
0623デフォルトの名無しさん
2007/01/27(土) 18:24:52>>610とか
0624デフォルトの名無しさん
2007/01/27(土) 18:25:440625デフォルトの名無しさん
2007/01/27(土) 18:34:540626デフォルトの名無しさん
2007/01/27(土) 22:41:370627デフォルトの名無しさん
2007/01/28(日) 01:51:32知れないじゃん。そこまで書かない方が悪いと言うかも知れないが。
いまでもシフトJISで全角半角、っていうやり方から変わってない
のかも知れないし。
Graphics.MeasureStringとか。
0628デフォルトの名無しさん
2007/01/28(日) 04:38:01そういうことなら実際にテキストボックスに文字入れてみたらサイズくらい判るだろ。
今回の事でプロポーショナルを初めて知ったんだとすれば良いことじゃないか。
0629デフォルトの名無しさん
2007/01/28(日) 10:27:28char[] array = { 'a', 'b', 'c', 'd' };
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
とやればうまく改行されてコマンドプロンプトに文字が表示されるのですが、
char[] array = { 'a', 'b', 'c', 'd' };
string w;
for(int i=0; i < array.Length; i++)
{
label1.Text = Convert.ToString(array[i]);
}
とやっても文字が最後のdしかラベルに表示されません。
どのようにすれば文字が全部表示されるでしょうか?
0630デフォルトの名無しさん
2007/01/28(日) 10:42:53文字と文字列は違います。
ループなど使わずにこう書きます。
label1.Text = new string(array);
むしろまずchar配列を使う必要があるのかどうかから検討したほうがいいと思います。
0631デフォルトの名無しさん
2007/01/28(日) 10:47:110632デフォルトの名無しさん
2007/01/28(日) 11:01:58>>630
添え字で指定して、文字を出力することが大事なんです。
>>631
うまくいきました。有難うございます。
0633デフォルトの名無しさん
2007/01/28(日) 11:12:01ちょっとまて
ループ中で文字列に追記し、しかも毎回label1.Textにアクセスするというのは効率が悪い。
どうしてもというならこう書け
StringBuilder sb = new StringBuilder();
for ( ... ) {
sb.Append(array[i]);
}
label1.Text = sb.ToString();
0634デフォルトの名無しさん
2007/01/28(日) 11:17:10起動した時点でメモリを12MB食ってんのよ
こういうもんなの?
初心者で申し訳ない。
0635デフォルトの名無しさん
2007/01/28(日) 11:20:18.net のランタイムライブラリが読み込まれるからそんなもの。
0636デフォルトの名無しさん
2007/01/28(日) 11:20:200637デフォルトの名無しさん
2007/01/28(日) 11:21:35そういうもん。サイズがでかくなってもその数値はあまり増えん。
起動し終わったら自然に8〜10Mぐらいに減る。
それから最小化すると極端に減るが、元に戻して操作するとやっぱり8〜10Mぐらいにもどる。
0638デフォルトの名無しさん
2007/01/28(日) 11:27:240639デフォルトの名無しさん
2007/01/28(日) 11:33:06見た目が減るってかw
ワーキングセットのうちプライベート分だけが表示されるんだっけ?
0640634
2007/01/28(日) 11:37:43即レス ありがとう
0641デフォルトの名無しさん
2007/01/28(日) 11:42:44・テキストファイルに1行1レコードでかかれたリストが処理対象。
・各レコードにはIDが割り当てられていて、同一内容のレコードは同一のIDを持つ。
・同一IDのレコードが複数のファイルに分散しているので、それが重複しないよう
に1ファイルにまとめ、テキストファイルとして出力したい。
このようなファイルを読み込んで
[input_A.txt]
200
100
[input_B.txt]
300
100
次の出力をえる処理です。
[output.txt]
200
100
300
処理量は、出力の output.txt のデータサイズで数十万レコード、100Mオーダー
になります。
現在はIDをキーとしたハッシュに全入力レコードを読み込み重複レコードをぶい
たあと、順番に出力しているのですが、当然ながらメモリ消費がはげしく、
スワップが多発している状態です。
そこでより効率的な方法がないでしょうか、というのが質問です。
やはり SQLite などの DB に頼るのが無難でしょうか?
0642デフォルトの名無しさん
2007/01/28(日) 11:47:04> やはり SQLite などの DB に頼るのが無難でしょうか?
無難つーかそれしか無いような気がするが
0643デフォルトの名無しさん
2007/01/28(日) 11:53:26入力ファイルがともに辞書順にソートされていれば単なるマージロジックで
処理できるのでメモリ消費はほとんどない。
ただWindowsのソートユーティリティはたいていオンメモリでやってるから
こっちのメモリ消費が激しい;;
0644デフォルトの名無しさん
2007/01/28(日) 12:09:440645デフォルトの名無しさん
2007/01/28(日) 12:41:32以下ならほぼ、メモリはID分だけですむけど
List<ID型,> isexist = new List<ID型,>();
for ( int i=0; i<読み込み行数; i++){
Read一行(内容);
if ( isexist.IndexOf(ID)<0 )
{
isexist.Add(iD);
Write一行(内容);
}
}
0646デフォルトの名無しさん
2007/01/28(日) 12:58:05それだと計算量が多いね。
IDのリストじゃなくてIDをキーにしたマップの方がいいかと
つまり bool[] か Dictionary<ID, bool>
0647デフォルトの名無しさん
2007/01/28(日) 13:14:06Dictionaryって速いの?
内部的な動作がわかんないからなんともいえないけど
計算量を考えるなら、
ArrayクラスのBinarysearchを利用すればいいとおもうが、
Sortに要するコストはどうなんだろうと思った
まあ、IDが整数ならたいしたメモリくわないし
整数以外なら、ハッシュをもちいるとか(衝突に関しては別対策必要)
0648デフォルトの名無しさん
2007/01/28(日) 13:21:39数十万レコードあるのを、1レコードごとに線形に検索したら
最後の方なんてどういうことになるかぐらい分かるだろ?
0649デフォルトの名無しさん
2007/01/28(日) 13:22:36Dictionaryはハッシュだよ。だから定数オーダーで検索ができる
(BinarySearchは対数オーダー)
キーが存在するかどうか保持するだけだから衝突も関係ないと思うが。
0650デフォルトの名無しさん
2007/01/28(日) 13:23:08Dictionaryはハッシュテーブルだからthis[]は定数オーダー
List.IndexOfは線形オーダー
Array#Binarysearchは対数オーダー
Array#Sortは最悪n^2オーダー
何を選ぶかなんて迷うことないだろ
0651デフォルトの名無しさん
2007/01/28(日) 13:24:54コレクションなら動的拡張で下手すりゃその倍、しかもリニアに必要。
>IDが整数ならたいしたメモリくわないし
正気か?
0652デフォルトの名無しさん
2007/01/28(日) 13:25:23Hashtableはコリジョンの処理を勝手にやってくれます
0653デフォルトの名無しさん
2007/01/28(日) 13:31:180654デフォルトの名無しさん
2007/01/28(日) 13:33:42>例えば4バイトかける数十万、200Mバイトくらいか?
どういう計算?
IDを保持せずに処理するといいたいの?
原理的に不可能だと思うんだが。
0655デフォルトの名無しさん
2007/01/28(日) 13:35:06「IDが整数ならたいしたメモリくわない」に対する反論じゃねえの?
0656デフォルトの名無しさん
2007/01/28(日) 13:35:500657デフォルトの名無しさん
2007/01/28(日) 13:37:250658デフォルトの名無しさん
2007/01/28(日) 13:37:450659デフォルトの名無しさん
2007/01/28(日) 14:05:440660デフォルトの名無しさん
2007/01/28(日) 14:07:52つまりデータが悪いとStackOverflowでアボン
0661デフォルトの名無しさん
2007/01/28(日) 14:11:57今後扱うレコード数が増えそうなので今回は DB 使うことにします。
また、 Dictionary に bool を入れる手は思いつかなかったで、他の場面で
使わせてもらいます。
いろいろなアイデアありがとうございました。
0662デフォルトの名無しさん
2007/01/28(日) 14:16:13まず小さい方のファイルをそのままコピー
小さい方のファイルを一行ずつ読みながらDictionary<ID型, bool>とかにキーだけ格納。
あとはもう一方のファイルでキーが格納されてないものだけ追加書き込み。
0663647
2007/01/28(日) 14:28:27納得 当たり前といえば、当たり前か
本ケースでDictionaryを用いようとすると、レスポンスよりメモリー量の方が問題になりそうかな
数倍程度は必要だろうし
MSDNの「Dictionary の既定の初期量は 3 ですが…」は、3倍ってこと?
0664デフォルトの名無しさん
2007/01/28(日) 14:30:14それはコンストラクタで指定しなかったときのCapacityの初期値。
Capacity==Countのときに値を追加しようとするとCapacityが二倍に拡張される。
0665647
2007/01/28(日) 14:41:57Thx
ああ、そういうこと 「Dictionary の容量は」をメモリ量と思ってた
MSDNに記述はないみたいだけど、ハッシュテーブルの要素数は
格納要素数の一桁ぐらい余裕見る必要あるんだろうなぁ
0666デフォルトの名無しさん
2007/01/28(日) 14:42:02どの程度メモリを食うかだな。
0667デフォルトの名無しさん
2007/01/28(日) 14:42:39>格納要素数の一桁ぐらい余裕見る必要あるんだろうなぁ
どういう意味??
0668デフォルトの名無しさん
2007/01/28(日) 14:42:58クイックソートの再帰深度が一定以上になったら、
ヒープソートに切り替える。
0670601
2007/01/28(日) 14:57:55そんなデカイデータならDBつかえよ
0671デフォルトの名無しさん
2007/01/28(日) 14:58:270672デフォルトの名無しさん
2007/01/28(日) 14:58:46普通はデータの2〜3倍くらいみとけば大丈夫。
0673デフォルトの名無しさん
2007/01/28(日) 14:59:140674デフォルトの名無しさん
2007/01/28(日) 15:00:00それで一桁も余分に必要なわけないじゃん
そもそもそのテーブルの要素数は固定でしょ?
格納する要素数の数が多ければ多いほどそんなものは無視できるじゃん
0675デフォルトの名無しさん
2007/01/28(日) 15:10:49<<無いの?
0676647
2007/01/28(日) 15:18:26>MSDNに 書 い て あ る
そうなの?見あたらなかったけど
>>672
>普通はデータの2〜3倍くらいみとけば大丈夫。
Thx
レスポンスが極端に落ちない条件だと思うけど、
結構少ない量で済むもんなんだね
自分で、ハッシュ法を実装したことないんで、勉強になった
0677デフォルトの名無しさん
2007/01/28(日) 15:26:54C++が変態なだけ
普通にread/writeしる
0678デフォルトの名無しさん
2007/01/28(日) 15:39:06outfile << stream;
同じような関数無い?
streamをファイルに保存できればいい
byte[]以外で
0679デフォルトの名無しさん
2007/01/28(日) 15:46:01ない
変態言語に慣れすぎだろ
0680デフォルトの名無しさん
2007/01/28(日) 15:49:40そうかそうか
0681デフォルトの名無しさん
2007/01/28(日) 15:57:23StreamやWriterのコンストラクタで別のStreamを引数に出来る。
StreamWriter sw = new StreamWriter(new BufferedStream(new GZipStream(file.OpenWrite(path), IO.Compression.CompressionMode.Compress), 1024 * 16))
0682デフォルトの名無しさん
2007/01/28(日) 16:10:24使い方が分からない。
Stream stream;をtemp.txtに書き込むにはどうすればいい?
0683デフォルトの名無しさん
2007/01/28(日) 16:12:59>>671
0684デフォルトの名無しさん
2007/01/28(日) 16:14:18すべてのクラスを見たよ
俺の頭じゃ理解不能
0685デフォルトの名無しさん
2007/01/28(日) 16:16:22Streamは抽象クラス。具体的に何のStreamなのさ?
0686デフォルトの名無しさん
2007/01/28(日) 16:17:00バイナリデータ
0687デフォルトの名無しさん
2007/01/28(日) 16:19:49実装に依存しないStream一般を表すために抽象クラスがあるんだろうよ
0688デフォルトの名無しさん
2007/01/28(日) 16:24:07よく理解できないんだが下埋めてくれないか?
Streamが保存できればStreamに変換できるものすべて保存できるんだけど・・・
// Streamゲット
Stream stream = ??????????????;
//StreamをTemp.datへ出力
??????????????????
0689デフォルトの名無しさん
2007/01/28(日) 16:29:54やりたいことがやっとわかった。
Read系のストリームをWrite系のストリームに直接つなぎたいわけだ。
0690デフォルトの名無しさん
2007/01/28(日) 16:30:39なんで byte[] 介しちゃダメなのさ?
欲しければ作れば良くね?
0691デフォルトの名無しさん
2007/01/28(日) 16:35:21そうそう
無いのか。自分で作ることにする
長らくありがとう
0692デフォルトの名無しさん
2007/01/28(日) 18:11:20昨日より、追加の所にDateTimePickerが出てこなくなってしまいました。
出てこなくなった原因とかお分かりになりますでしょうか?
0693デフォルトの名無しさん
2007/01/28(日) 23:10:060694デフォルトの名無しさん
2007/01/29(月) 00:45:00C#のコレクションクラスのToStringは大抵objectクラスのものなので不便です。
コレクションクラスの中身を確認できる形で出力する簡単な方法ってありますか?
0695デフォルトの名無しさん
2007/01/29(月) 00:57:10// C#3.0 になるとそう言うのを拡張メソッドで書く奴が増えそうな予感
0696デフォルトの名無しさん
2007/01/29(月) 01:08:050697デフォルトの名無しさん
2007/01/29(月) 01:09:19public static String ToMemberwiseString<T>(this IEnumerable<T> list);
public static String ToMemberwiseString<T>(this IEnumerable<T> list, String format) where T : IFormattable;
public static String ToMemberwiseString<T>(this IEnumerable<T> list, IFormatProvider formatProvider) where T : IFormattable;
public static String ToMemberwiseString<T>(this IEnumerable<T> list, String format, IFormatProvider formatProvider) where T : IFormattable;
ああ、よだれでそう、こりゃやるだろうな…ぜったいやるorz
0698""""""""
2007/01/29(月) 01:09:26http://eco.no.land.to/idol/forumdisplay.php?fid=1&filter=0&orderby=views&page=1
0699デフォルトの名無しさん
2007/01/29(月) 01:09:42スレ違い
0700デフォルトの名無しさん
2007/01/29(月) 01:10:480701デフォルトの名無しさん
2007/01/29(月) 01:19:200702デフォルトの名無しさん
2007/01/29(月) 01:33:430703デフォルトの名無しさん
2007/01/29(月) 01:35:34禁断の果実とはすべからく美味しそうに見えるものです
0704デフォルトの名無しさん
2007/01/29(月) 01:39:530705デフォルトの名無しさん
2007/01/29(月) 08:52:01あるコードをコンパイルすると、フォームとコンソールが同時に起動してしまいます。
フォームだけ起動させるには、どの設定をいじればよいのでしょうか?
0706デフォルトの名無しさん
2007/01/29(月) 08:53:200707デフォルトの名無しさん
2007/01/29(月) 09:00:08自分が変数名をいじった程度に改造すると、フォームとコンソールが起動するんです。
コンパイルオプションを教えていただければありがたいのですけれど。
0708デフォルトの名無しさん
2007/01/29(月) 09:13:460709デフォルトの名無しさん
2007/01/29(月) 09:16:520710デフォルトの名無しさん
2007/01/29(月) 09:48:500711デフォルトの名無しさん
2007/01/29(月) 10:12:26で、自分がやると同じようにフォームに直接描画してくれるんですが、
同時にコンソールが開くんです。
たぶんコンパイルオプションがあると思うんですけれど、分からないんです。
0712デフォルトの名無しさん
2007/01/29(月) 12:01:26→出力の種類
は?
0713デフォルトの名無しさん
2007/01/29(月) 12:21:31>>712 のWindowsアプリケーションをコンソールアプリケーションにすると
両方出るな
0714デフォルトの名無しさん
2007/01/29(月) 21:48:20同じにしようとしたのですが、
txtEdit.BackColor = KnownColor.ButtonFace;
エラー3
型 'System.Drawing.KnownColor' を型 'System.Drawing.Color' に暗黙的に変換できません
というエラーが出て色を代入できませんでした。
(System..Drawing.Color) をつけてキャストしてもみたのですがダメでした。
すみませんがよろしくお願いします。
0715デフォルトの名無しさん
2007/01/29(月) 21:51:03MSDNで型を見れ。KnownColorは列挙体、即ち数値だ
http://msdn2.microsoft.com/ja-jp/library/system.drawing.knowncolor.aspx
http://msdn2.microsoft.com/ja-jp/library/system.drawing.systemcolors.aspx
0716デフォルトの名無しさん
2007/01/29(月) 22:02:17わかりました、、ありがとうございます!
txtEdit.BackColor = Color.FromName("ButtonFace");
で代入できました、やっと意味がわかりました。
0717デフォルトの名無しさん
2007/01/29(月) 22:03:45じゃだめなんか?
0718デフォルトの名無しさん
2007/01/29(月) 22:06:43せっかくリンクつけたんだからSystemColors使ってくれよ
それじゃtypoしたときにコンパイルエラーが出ない
0719デフォルトの名無しさん
2007/01/29(月) 22:08:14SystemColors の方が良いけどな。
0720デフォルトの名無しさん
2007/01/29(月) 22:14:02リフレクションでSystemColorsのプロパティ取り出してやがる
0721デフォルトの名無しさん
2007/01/29(月) 22:30:150722デフォルトの名無しさん
2007/01/29(月) 22:33:380723デフォルトの名無しさん
2007/01/29(月) 22:34:470724デフォルトの名無しさん
2007/01/29(月) 22:38:140725デフォルトの名無しさん
2007/01/29(月) 22:59:50つーかリフレクション以外に無理なんじゃない?
0726デフォルトの名無しさん
2007/01/29(月) 23:19:18超巨大な switch
0727デフォルトの名無しさん
2007/01/29(月) 23:38:53最大化したMDIの子フォームをActivateMdiChildなどでアクティブにして切り替えると
元の大きさのフォームが一瞬ちらつくんですが、直す方法はないでしょうか…?
0728デフォルトの名無しさん
2007/01/29(月) 23:40:09.Netの糞仕様です
0729デフォルトの名無しさん
2007/01/30(火) 00:30:50それが本当にいいやりかたか、もっと適したものはないか、
という発想ができずに最初に見つけたやり方で突っ走る。
初心者はっていうより、初心者脱出できないやつの傾向だな。
0730デフォルトの名無しさん
2007/01/30(火) 01:44:35わかったらそれ以降直せばいいんだし
むしろ、あまりこだわるといつまでたっても何も出来ない
レベルにあったバランスの問題でしょ
0731デフォルトの名無しさん
2007/01/30(火) 02:08:33正:>>729と自称非初心者が申しております
0732デフォルトの名無しさん
2007/01/30(火) 04:16:25そんなこと突っ込んでも意味がない
全部わかった上でプログラミングを始めるやつなんていない
こんなソフトがないか?ないなら作って見ようって発想から来てるんだから
いきなり難しい課題を挑戦しようとしているのは当然でしょ
ありきたりのソフトはすでにフリーで出回ってるんだからさ
0733デフォルトの名無しさん
2007/01/30(火) 06:26:58続けて入力すると、文字が重なってしまいます。
buttonを押すたびに、Formを再描画させたいのですが、どのようにすればよいのでしょうか?
0734デフォルトの名無しさん
2007/01/30(火) 09:49:480735デフォルトの名無しさん
2007/01/30(火) 15:49:02もっといい方法の事を考えた方が、
そのもっといい方法の事が理解しやすいよね。
0736デフォルトの名無しさん
2007/01/30(火) 16:48:590737デフォルトの名無しさん
2007/01/30(火) 18:00:50ゲームなら倒せるのに
0738デフォルトの名無しさん
2007/01/30(火) 18:02:270739デフォルトの名無しさん
2007/01/30(火) 18:36:37DrawImageし直すだけ
0740デフォルトの名無しさん
2007/01/30(火) 21:48:35その前にPictureBoxにどうやってイメージを表示しているか教えてくれ。
場合によってはまたキミの質問が来るかとw
0741デフォルトの名無しさん
2007/01/30(火) 21:54:11Imageプロパティを使う方法はあくまで簡易表示用だから,
上から描画したりするような凝ったことをするなら
イメージの描画にImageプロパティは使わずGraphics.DrawImageでやる
0742デフォルトの名無しさん
2007/01/31(水) 00:08:330743デフォルトの名無しさん
2007/01/31(水) 01:43:13Button1_click で、 pictureBox.Text を設定して、pictureBox.Invalidate する。
あとは pictureBox の Paint いべんとだか、onPaint だかを実装すれば棲む話じゃない?
0744デフォルトの名無しさん
2007/01/31(水) 03:01:01初心者スレで訳のわからない事を書くな。
混乱するだろ。
0745デフォルトの名無しさん
2007/01/31(水) 03:12:33すごい気になる
0746デフォルトの名無しさん
2007/01/31(水) 12:15:500747デフォルトの名無しさん
2007/01/31(水) 18:15:250748デフォルトの名無しさん
2007/02/01(木) 00:05:09配布するのになにか制約とかありますか?
0749デフォルトの名無しさん
2007/02/01(木) 00:13:270750デフォルトの名無しさん
2007/02/01(木) 00:14:18SDKで作ったものはもちろん,VC#Expressで作ったものも完全自由
0751デフォルトの名無しさん
2007/02/01(木) 00:19:12本当に無償KITなんですね
0752デフォルトの名無しさん
2007/02/01(木) 00:34:250753デフォルトの名無しさん
2007/02/01(木) 00:50:31でも悔しいけどVSExpressは本当に太っ腹
0754デフォルトの名無しさん
2007/02/01(木) 00:52:350755デフォルトの名無しさん
2007/02/01(木) 00:53:30C++ は色々なものが無くて、後からインスコしたり
別ツール使ったりしないといけないんだよな。
C# 使え! って言いたいんだろうけどさ。
0756デフォルトの名無しさん
2007/02/01(木) 01:17:510757デフォルトの名無しさん
2007/02/01(木) 01:20:160758756
2007/02/01(木) 01:24:57MSもあえてハッキリ言いたくないんだろうなw
0759デフォルトの名無しさん
2007/02/01(木) 01:42:42ttp://www.microsoft.com/japan/msdn/vstudio/express/faq/
0760デフォルトの名無しさん
2007/02/01(木) 01:54:35どういう風に使い分けるんですか
0761デフォルトの名無しさん
2007/02/01(木) 02:10:57つか全然違う物なのになんでそんな疑問がでるのかわからん
0763デフォルトの名無しさん
2007/02/01(木) 03:22:26C#・VB→開発効率重視
C++→パフォーマンス重視
MS英語のページかブログに住み分けが書かれてたんだが忘れた
0764デフォルトの名無しさん
2007/02/01(木) 04:42:12C#になってC++は消えてしまうということはないんですかね
0765デフォルトの名無しさん
2007/02/01(木) 07:03:22http://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_01.html
0766デフォルトの名無しさん
2007/02/01(木) 07:35:27VBは今後消えていくだろうな
0767デフォルトの名無しさん
2007/02/01(木) 07:56:090768デフォルトの名無しさん
2007/02/01(木) 10:00:330769デフォルトの名無しさん
2007/02/01(木) 17:11:08全然違うよ
もっと勉強しようね
0770デフォルトの名無しさん
2007/02/01(木) 17:13:28VBはうんこだよ、素人が組むにはVBみたいな曖昧言語でいいが
仕事で組むものではない、厳密にするならC#になる
0771デフォルトの名無しさん
2007/02/01(木) 17:46:070772デフォルトの名無しさん
2007/02/01(木) 17:48:250773デフォルトの名無しさん
2007/02/01(木) 17:53:12・・・
0774デフォルトの名無しさん
2007/02/01(木) 19:33:10しかたねーだろ、ある機器のデータをエクセルで受ける仕様なんだから
しかも藻前が思ってる程簡単な物でもないし
こちとらシステム全部一人でやってるんだ
0775デフォルトの名無しさん
2007/02/01(木) 19:35:110776デフォルトの名無しさん
2007/02/01(木) 19:39:10>C++とC#とVBAを仕事で同時に組んだ
と言ってるじゃねーか VBAだけじゃねーよ
言っておくが機器のファームまで組んでる
0777デフォルトの名無しさん
2007/02/01(木) 19:54:49>データをエクセルで受ける仕様
受け取るんならC#で問題ないだろ・・・
VBAつきEXCELLとして提供するなら別だが。
0778デフォルトの名無しさん
2007/02/01(木) 19:59:16見苦しいと言っておる
0779デフォルトの名無しさん
2007/02/01(木) 20:06:00アクセスだけどね。
アクセスにしとくと、事務所の女性が自分で帳票フォームとかして便利なんだ。
0780デフォルトの名無しさん
2007/02/01(木) 20:25:20全然別物なのに
0781デフォルトの名無しさん
2007/02/01(木) 20:28:40VB使いはM$と共に去りぬ
http://pc10.2ch.net/test/read.cgi/tech/1170243832/l50
0782デフォルトの名無しさん
2007/02/02(金) 00:49:55藻前は馬鹿か、受けるだけならC#とかC++で作ってるわ
何でエクセルで受けるのか良く考えろ
0783デフォルトの名無しさん
2007/02/02(金) 01:11:050784デフォルトの名無しさん
2007/02/02(金) 01:33:350785デフォルトの名無しさん
2007/02/02(金) 01:56:01糞仕様切って逆ギレかw
0786デフォルトの名無しさん
2007/02/02(金) 07:38:44プロの仕事になると、エンドユーザーの強い要求はあれば
システム的に糞だろうが、良かろうがそれに従うしかない
要はカスタム品の場合、エンドユーザーが一番使いやすい方法を取る事
(要求に応じて高い金払ってくれればの話だが)
一方的にアプリをユーザに提供する方法以外、自分の思うソフト構成なんてそうそう出来ないよ
0787デフォルトの名無しさん
2007/02/02(金) 07:44:010788デフォルトの名無しさん
2007/02/02(金) 08:05:38結論としてC#あればVBはいらないと
0789デフォルトの名無しさん
2007/02/02(金) 08:07:08例えばハードディスクの内容をすべて削除するようなもの
0790デフォルトの名無しさん
2007/02/02(金) 08:12:46でも、それが出来ることとウィルスであることはまったく関係ない。
0791デフォルトの名無しさん
2007/02/02(金) 09:34:130792デフォルトの名無しさん
2007/02/02(金) 13:50:290793デフォルトの名無しさん
2007/02/02(金) 14:40:11掘り出すな、また脱線する
0794デフォルトの名無しさん
2007/02/02(金) 14:48:38使えるものが限られているだけで
基本的部分は同じだろ
C++とC#程の違いはない
違う意味で漏れに言わせれば
C#=VB2005だわ
0795デフォルトの名無しさん
2007/02/02(金) 16:28:450796デフォルトの名無しさん
2007/02/02(金) 21:24:06CheckedListBoxでいずれかのアイテムのチェック城外が変更されたときに、
既にチェックされたアイテムの一覧(CheckedItemとかで)を取りたいのですが、
ItemCheckイベントだと、チェックされた/チェックが外れた瞬間のアイテムが取得できません。
適当に合成してやれば良いのかもしれませんが、他に何か良い方法はないでしょうか?
0797デフォルトの名無しさん
2007/02/02(金) 21:27:05何がしたいのかよく分からん。
0798デフォルトの名無しさん
2007/02/02(金) 21:51:42その時チェックされた/チェックが外れたアイテムが入ってないのですよね。
array<String ^> ^items = gcnew array<String ^>(CheckedItems->Count+1);
CheckedItems->CopyTo(items, 0);
if(e->CheckedState)
items[CheckedItems->Count] = e->NewValue;
とかやるしかないんですかね。
0799デフォルトの名無しさん
2007/02/02(金) 21:54:160800デフォルトの名無しさん
2007/02/02(金) 21:58:490801デフォルトの名無しさん
2007/02/02(金) 21:58:490802デフォルトの名無しさん
2007/02/02(金) 22:00:17発想を転換してごらん
0803デフォルトの名無しさん
2007/02/02(金) 22:03:030804798
2007/02/02(金) 22:04:190805デフォルトの名無しさん
2007/02/02(金) 22:05:03そのコードは無茶苦茶だがCheckedIndicesとe.Index,e.NewValueから作り出すしかないと思う
>>802
柔軟な発想とやらを具体的に示してくれ
0806デフォルトの名無しさん
2007/02/02(金) 22:05:30後半どころか頭からおかしいだろ。
なんでCheckedListBox+CheckedItemCollectionをString[]にコピーしてるんだ。
0807デフォルトの名無しさん
2007/02/02(金) 22:15:100808デフォルトの名無しさん
2007/02/02(金) 22:56:30どうも。
0809デフォルトの名無しさん
2007/02/03(土) 00:45:20そこだけ色を変えたり、文字サイズを大きくしたりすることは出来るでしょうか?
出来るのであれば、その方法を教えてください。
やはり、Labelを列挙するという方法じゃなきゃ無理なのでしょうか?
0810デフォルトの名無しさん
2007/02/03(土) 00:52:210811デフォルトの名無しさん
2007/02/03(土) 00:53:50描画を横取りすればできんことはないが、
Labelを列挙とかわけの分からんこと言ってるようなレベルじゃ辛いだろう。
RichTextBoxでも使ったほうが楽じゃねえかな
0812デフォルトの名無しさん
2007/02/03(土) 01:13:30webreq.Credentials = new System.Net.NetworkCredential("user", "pass");
webreq.GetResponse();
でどう?
0813デフォルトの名無しさん
2007/02/03(土) 01:19:47PofEAA(翻訳)を一通り読んだのですが、.NETFrameworkを使用した場合のTableModuleパターンとは
簡単に言ってしまえば、DataTable(DataSet)を使用した開発という認識で良いのでしょうか?
0814デフォルトの名無しさん
2007/02/03(土) 01:19:540815デフォルトの名無しさん
2007/02/03(土) 01:23:180816デフォルトの名無しさん
2007/02/03(土) 01:24:540817デフォルトの名無しさん
2007/02/03(土) 01:30:31ありがとうございます
やっぱりCookieの関係かWebClientクラスでは出来ないねのですね…
0818デフォルトの名無しさん
2007/02/03(土) 01:50:190819デフォルトの名無しさん
2007/02/04(日) 03:44:52表示しておく方法はないでしょうか?
0820デフォルトの名無しさん
2007/02/04(日) 03:49:46ない
0821デフォルトの名無しさん
2007/02/04(日) 06:08:40ありがとうございます。
仕方ないので、ダミーノードを登録しておいてExpandした時に置き換えることにしました。
0822デフォルトの名無しさん
2007/02/04(日) 06:23:12最初に登録するのが嫌なのか
設計に問題ありそうだな
そのうち混乱してきて作り直すに1票
0823デフォルトの名無しさん
2007/02/04(日) 10:11:21目標のアドレスと接続する際、try{ 接続処理 }catch{ 例外を受け取ったときの処理 }で接続をしているのですが、
接続の際、例外を受け取ったり結果にたどり着くまでにそのプログラムの処理が止まってしまいます。
これなんとか解決する方法ありませんでしょうか?
0824デフォルトの名無しさん
2007/02/04(日) 10:22:52うるせー馬鹿
0825デフォルトの名無しさん
2007/02/04(日) 10:25:50どういうことをやってるか分からん以上は答えようがないが
止まるってどういうことなんだ?
プロセスが落ちるのか、無限ループして止まってるように見えるのか。
0826デフォルトの名無しさん
2007/02/04(日) 10:57:34説明不足でした。申し訳ありません。
プログラムはポートを空けて自分のコンピュータに接続されてくるのを待つものです。
データが送られてくるまで待っているようなんですが
外から見るとフリーズしているように見えます。
データを実際に送ってみて受信されると元のように操作できるようになります。
0827デフォルトの名無しさん
2007/02/04(日) 11:01:130828デフォルトの名無しさん
2007/02/04(日) 11:01:24Begin*/End*系の非同期メソッドを使うか、通信用に別のスレッドを用意すればいい。
0829826
2007/02/04(日) 11:08:26調べてきます。どうもありがとうございました。
0830デフォルトの名無しさん
2007/02/04(日) 12:16:47VBからくる香具師とVC++から来る香具師で
かなりレベルが違う
0831デフォルトの名無しさん
2007/02/04(日) 12:18:470832デフォルトの名無しさん
2007/02/04(日) 12:21:03今日は釣れてますか?
0833デフォルトの名無しさん
2007/02/04(日) 12:38:47中間コードの中間コード
ウィンドウズのウィンドウズ
いつまでやるんだ?こういうことって
0834デフォルトの名無しさん
2007/02/04(日) 12:42:170835デフォルトの名無しさん
2007/02/04(日) 12:54:26OSが人間になるまで
0836デフォルトの名無しさん
2007/02/04(日) 13:00:18.netがうまく動かない様な事を風の噂で聞いたんだが
0837826
2007/02/04(日) 13:03:36何度も申し訳ありません。
チャットを作ってみたのですが、スレッドをTimerで回してみたのですが、
文字を送信した際に送信されない、受信されない不具合があるようでした。
受信側で「何かデータが送られてきたら処理を行う」等のイベントを定義したいのですが
そのようなイベントやメソッドありましたら教えてください。
よろしくおねがいします
0838デフォルトの名無しさん
2007/02/04(日) 13:05:37そんなこと聞いたことないけど。
MSDN でダウンロードできるようになって以来ずっと Vista 使ってるけど、
C# で作ったもんが不具合起こしたこともない。
0839デフォルトの名無しさん
2007/02/04(日) 13:07:010840デフォルトの名無しさん
2007/02/04(日) 13:07:260841デフォルトの名無しさん
2007/02/04(日) 13:07:44スレッドをTimerでまわすって意味不明なんだが、いったい君は何をやってるんだね?
0842デフォルトの名無しさん
2007/02/04(日) 13:08:55そっか、ガセの話か
ありがと
0843826
2007/02/04(日) 13:09:02デリゲート使えばよかったDOS
0844デフォルトの名無しさん
2007/02/04(日) 13:09:490845826
2007/02/04(日) 13:19:21┣文字列が送信された場合に送信┫
┗別の操作があった場合その処理┛
こんな感じにしたかったんですが送受信に関しては
作ったメソッドは文字列受信したら停止してしまいます。
そのため定期的に呼ばなきゃならないのかなと。
0846デフォルトの名無しさん
2007/02/04(日) 13:19:48Delphi チャリンコ
VB 車
C# 単車
C++やりたいけどなぁ。
コードを書くのがまどろっこしすぎる
0847デフォルトの名無しさん
2007/02/04(日) 13:25:19.netならVBもC#も違いはないと思うが
VBは関わらない方が良い気がする
0848デフォルトの名無しさん
2007/02/04(日) 13:26:300849デフォルトの名無しさん
2007/02/04(日) 13:26:370850デフォルトの名無しさん
2007/02/04(日) 13:31:04大文字多いし
0851デフォルトの名無しさん
2007/02/04(日) 13:37:03メモリあれば問題ない XPだと1Gくらい? 756M積んでた時でも気にならなかった気がする
今は256Mなんで起動させないけど
0852デフォルトの名無しさん
2007/02/04(日) 13:38:43それなりに読める利点がある
0853デフォルトの名無しさん
2007/02/04(日) 13:41:25それ両方やるとたぶん意見変わるよw
実際俺がそうだから。
0854デフォルトの名無しさん
2007/02/04(日) 13:42:31MSが無言で藻前らC#に移れよ、いずれVB止めるからって言ってる様に見えるぞ
いつまでもしがみついてると酷い目にあう気がする
0855デフォルトの名無しさん
2007/02/04(日) 13:44:21両方やってるけど850に同意するよ
VB系の文法は好かん
0856デフォルトの名無しさん
2007/02/04(日) 13:45:41両方やったことあるけど
関数とかクラスとか入れてるから
BASICとしては言語バランスメチャクチャになってる
0857デフォルトの名無しさん
2007/02/04(日) 13:46:240858デフォルトの名無しさん
2007/02/04(日) 13:48:18w2kでメモリは256
一応Eclipse動いてるからどうにかなる気もするが、
とりあえずコンソールからコンパイルして遊んでみることにする
0859デフォルトの名無しさん
2007/02/04(日) 13:56:21話ずれてないかい?
まあ良いけど、コードの読みやすさは明らかにVBのコードの方が上だと思うけどね俺は
0860デフォルトの名無しさん
2007/02/04(日) 14:03:03End Sub
とかめんどい
{}
これでいい
0861デフォルトの名無しさん
2007/02/04(日) 14:04:280862デフォルトの名無しさん
2007/02/04(日) 14:05:53IDE嫌いな人?
今時珍しいね
0863デフォルトの名無しさん
2007/02/04(日) 14:16:16ぱっと見て全体を把握しやすい
0864デフォルトの名無しさん
2007/02/04(日) 14:33:48まぁ内容的に初心者スレだけどなwww
0865デフォルトの名無しさん
2007/02/04(日) 15:47:50public void a()
{
for(....)
{
}
}
こんな感じで入れ子何個も作ることってできないでしょ
かなり見ずらい
0866デフォルトの名無しさん
2007/02/04(日) 15:54:14それどんな釣りだよw
0867デフォルトの名無しさん
2007/02/04(日) 16:44:39【VB.NET】VS2005 選ぶならどっち?【C♯】
http://pc10.2ch.net/test/read.cgi/tech/1106538237/l50
0868821
2007/02/04(日) 18:25:07>>824は偽者ですが(´・ω・`)Expandする度にDBに問い合わせをしているので、
数が増えてくると一番最初に開くときに時間がかかりそうなことをしているのが理由です。
0869デフォルトの名無しさん
2007/02/04(日) 19:16:39プログラムの保存データをXMLで保存しようとしてたのですが、
バイナリで保存するように変更、読み書きともに成功したのですが、
この保存データを別のプログラムから読み込もうとしたとき、
SerializationExceptionが発生してしまいます。
別のプログラム側も、クラス名、メンバ名、数ともに一致していることは
確認しました。
XMLの時はこんなことなかったのですが、どのようにしたら読み込める
ようになりますか?
0870デフォルトの名無しさん
2007/02/04(日) 19:20:39アセンブリ修飾型名で保存されるから、
別のプログラムも型を定義したアセンブリを参照している必要がある。
0871デフォルトの名無しさん
2007/02/04(日) 19:35:49ということは、Assembly.Load()とかを使って元のプログラムを読み込んで、
MethodInfoからInvoke()で読み書きすればいいのでしょうか?
0872デフォルトの名無しさん
2007/02/04(日) 19:38:160873デフォルトの名無しさん
2007/02/04(日) 19:40:25フラグ立てるだけだけどな
値を与えたいならconstを使っとけばコンパイル時に置き換えられる
0874デフォルトの名無しさん
2007/02/04(日) 19:58:11どうもです。
0875デフォルトの名無しさん
2007/02/04(日) 20:00:43普通に型を定義してるアセンブリを参照しとけばいいんじゃない?
0876デフォルトの名無しさん
2007/02/04(日) 20:21:02あぼーんの可能性があるんだよね。
違ったっけ?
0877デフォルトの名無しさん
2007/02/04(日) 20:22:390878デフォルトの名無しさん
2007/02/04(日) 20:28:39バージョンの意味が違うと思いますがw
0879デフォルトの名無しさん
2007/02/04(日) 20:39:47ということは、元プログラムの保存用クラスをpublicにしなければいけないという
ことですか…。
手元に元プログラムのソースがないので今日中には無理か orz
ありがとうございました。
0880デフォルトの名無しさん
2007/02/04(日) 22:30:33メンバtimei,メンバido,メンバkeidoを持つ構造体配列を作成したいのですが、
やり方が分かりません。
ファイル読み込むのと、構造体を宣言するまでは出来るのですが、
作成はどうすればいいのでしょうか?
0881デフォルトの名無しさん
2007/02/04(日) 22:34:27ファイルの読み込みは出来てるって、ドコに読み込んでるの?
ちょっとくらい今のソースを書いてみ。
0882デフォルトの名無しさん
2007/02/04(日) 22:34:580883デフォルトの名無しさん
2007/02/04(日) 22:39:540884デフォルトの名無しさん
2007/02/04(日) 22:44:26今は一行ずつ読み込んでlistboxに表示させています。
string path = textBox1.Text;
System.IO.StreamReader (path)
new System.IO.StreamReader(path);
string line;
listBox1.Items.Clear();
while((line=reader.ReadLine()) !=null)
{
listBox1.Items.Add(line);
}
reader.Close();
}
listboxに表示を構造体作成の処理に変なければいけないんですよね。
0885デフォルトの名無しさん
2007/02/04(日) 22:46:14C#は、CでもC++でもありませんよ。
C#は、CでもC++でもありませんよ。
C#は、CでもC++でもありませんよ。
0886デフォルトの名無しさん
2007/02/04(日) 22:47:180887デフォルトの名無しさん
2007/02/04(日) 22:50:000888デフォルトの名無しさん
2007/02/04(日) 22:51:01釣だなw
そうじゃないなら勉強しなおせ!
0889デフォルトの名無しさん
2007/02/04(日) 22:51:23何を言ってるのか分からん
0890デフォルトの名無しさん
2007/02/04(日) 22:52:48なんでもかんでも頭から聞いてもなぁ・・
0891デフォルトの名無しさん
2007/02/04(日) 22:53:160892デフォルトの名無しさん
2007/02/04(日) 22:54:070893デフォルトの名無しさん
2007/02/04(日) 22:57:480894デフォルトの名無しさん
2007/02/04(日) 23:02:29おもろくないから他所でやれ
0895881
2007/02/04(日) 23:04:08ほれ、先生には内緒だぞ。
後は適当にやってくれ。
struct Kouzoutai
{
public string timei;
public string ido;
public string keido;
}
string[] value = line.Split(',');
Kouzoutai kouzoutai = new Kouzoutai();
kouzoutai.timei = value[0];
kouzoutai.ido = value[1];
kouzoutai.keido = value[2];
0896デフォルトの名無しさん
2007/02/04(日) 23:07:25そんな先生には教わりたくないな
0897デフォルトの名無しさん
2007/02/04(日) 23:09:130898デフォルトの名無しさん
2007/02/04(日) 23:10:09881,882,893,895さん、ありがとうございました!
0899デフォルトの名無しさん
2007/02/04(日) 23:19:26ある関数に引数をキー入力する場合Const値が選べるんですけど
あれって、構造体でConstを宣言すればいいんでしょうか?
0900デフォルトの名無しさん
2007/02/04(日) 23:32:35言ってることがはっきりしないので
例を挙げると、テキストカラーとか入力すると色んな色がフルダウンメニューで
でるあれです
0901デフォルトの名無しさん
2007/02/04(日) 23:35:25>言ってることがはっきりしないので
はっきりしてないもんが実になる訳ないだろ
0902デフォルトの名無しさん
2007/02/04(日) 23:36:48そのとおり
_| ̄|○
0903デフォルトの名無しさん
2007/02/05(月) 00:15:020904デフォルトの名無しさん
2007/02/05(月) 01:10:48あれはどこかにAPIがあったりするんでしょうか。
0905デフォルトの名無しさん
2007/02/05(月) 01:30:100906デフォルトの名無しさん
2007/02/05(月) 01:46:500907デフォルトの名無しさん
2007/02/05(月) 02:04:43渡したいときはどうすればいいかおしえれくらさい。
0908デフォルトの名無しさん
2007/02/05(月) 02:15:02こんな感じじゃない?
0909デフォルトの名無しさん
2007/02/05(月) 02:16:04[DllImport("user32")]
static extern bool EnumWindows(EnumWindowsCallback lpEnumFunc, IntPtr lParam);
delegate bool EnumWindowsCallback(IntPtr hWnd, IntPtr lParam);
...
EnumWindows(new EnumWindowsCallback(プロシージャ), IntPtr.Zero);
EnumWindows(プロシージャ, IntPtr.Zero); // C#2.0
匿名関数なら、
EnumWindows(delegate(IntPtr hWnd, IntPtr lParam)
{
Console.WriteLine(hWnd);
return true;
}, IntPtr.Zero);
てな感じか
0910デフォルトの名無しさん
2007/02/05(月) 02:22:140911デフォルトの名無しさん
2007/02/05(月) 03:06:19ありがとうございます。
0912デフォルトの名無しさん
2007/02/05(月) 10:09:35メソッドで参照のまま使い続けるにはどうすれば良いのでしょう?
なんか説明しにくいですが
要はC++のようにクラスのコンストラクタの引数をポインタで受け取って
アドレスをクラスローカルのポインタメンバにコピーして そのクラス内で
使い続けるようなことができるのでしょうか、ということです。
0913デフォルトの名無しさん
2007/02/05(月) 10:57:21値型ならref
0914912
2007/02/05(月) 11:44:07bool test_bool;
object test_object;
public コンストラクタ(ref bool test_bool, object test_object)
{
this.test_bool = test_bool;
this.test_object=test_object;
}
private void testmethod()
{
test_bool = true;//これはローカルメンバいじってるだけ
bool temp_bool = true;
test_object = (object)temp_bool; //これもローカル……
}
}
例えば、こんな感じで testmethod()でコンストラクタ引数で参照したtest_bool自体
をいじりたいのですが……
testmethod()にどうやって持って行けばいいのかがわからないのです
ボックス化して渡しても変更されないですし
0915912
2007/02/05(月) 11:53:16class test{
bool* mybool;
public test(bool* test_bool){
mybool = test_bool;
}
てな感じで、その後testクラス内ではmyboolを
利用するだけで参照元の変更ができたような……
0916デフォルトの名無しさん
2007/02/05(月) 12:49:08this.test_bool = &test_bool;
this.test_object=&test_object;
0917デフォルトの名無しさん
2007/02/05(月) 13:11:24つまりunsafe指定で使うしか無いということですか
0918デフォルトの名無しさん
2007/02/05(月) 14:20:210919912
2007/02/05(月) 14:56:05それってボックス化とおなじことでは?
コンストラクタから外に出す時点で別のインスタンスに
なってしまうのですが……
アドレスというか参照だけもらいたいのです
できればunsafe使わずに
0920デフォルトの名無しさん
2007/02/05(月) 15:01:35>なってしまうのですが……
,一-、
/ ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■-っ < んなーこたーない
´∀`/ \__________
__/|Y/\
Ё|__ | / |
| У |
0921デフォルトの名無しさん
2007/02/05(月) 15:02:020922デフォルトの名無しさん
2007/02/05(月) 15:04:28C#ってCっぽく見えるが
VBに近い
0923デフォルトの名無しさん
2007/02/05(月) 15:05:28C#ではマネージドポインタは使えないから無理。
>>918の通りに参照型でラップ(≠ボックス化)して、その参照をやり取りするしかない。
0924デフォルトの名無しさん
2007/02/05(月) 15:13:480925912
2007/02/05(月) 15:31:05ありがとうございます。
なるほど。メンバにしたクラスをローカルクラスで受ければ大丈夫ですね
boolのボックス化=boolをメンバにもつオブジェクト型クラスの作成
と勘違いしてました。そもそもオブジェクト型も参照型のはずでは……
わけがわかりませんorz
0926デフォルトの名無しさん
2007/02/05(月) 15:31:31structはスタックにも直接積まれる。そういうことだ
0927デフォルトの名無しさん
2007/02/05(月) 16:06:13class BoolWrapper {
public BoolWrapper(bool x) {
_value = x;
}
public bool Value {
get { return _value; }
set { _value = value; }
}
public bool _value;
}
class Test {
public Test(BoolWrapper x) {
_x = x;
}
public Method() {
_x.Value = true;
}
public BoolWrapper _x;
}
static void Main() {
BoolWrapper hoge = new BoolWrapper(false);
Test testobj = new Test(hoge);
testobj.Method();
Console.Write(testobj._x.Value); //true
Console.Write(hoge.Value); //hogeの中も勿論true
}
ボックス化はBoolWrapperのValueプロパティからsetが出来ない版を、
わざわざクラス作らなくても自動的にやってくれる機能だと思えばいい。
0929デフォルトの名無しさん
2007/02/05(月) 18:06:05class Ref<T> where T : struct
{
private T _value;
public T Value{get{return _value;}set{_value=value}}
}
0930デフォルトの名無しさん
2007/02/05(月) 20:32:35教えてください。
以前はデバッグ時に一時停止してのコード変更が可能だったのに、
どこかのタイミングからか、コードウインドウのタブ耳にロックのマークが現われ、
デバッグ実行中の一時停止でコード変更ができない状態になってしまいました。
これを解除してまたコード変更可能な状態にしたいのですが、
方法が見つけられずにいます。すみませんが解除の仕方があれば教えてください。
0931デフォルトの名無しさん
2007/02/05(月) 20:42:40そんな悪い習慣はこの際捨てる、が正解だと思う。
質問の答えはたぶんリリースビルドになってるだけでしょ。
構成マネージャでデバッグビルドに戻せば直る。
0932デフォルトの名無しさん
2007/02/05(月) 20:46:000933デフォルトの名無しさん
2007/02/05(月) 20:59:250934デフォルトの名無しさん
2007/02/05(月) 21:00:26知らなかった
0935デフォルトの名無しさん
2007/02/05(月) 21:34:06Edit and Continueでググってみ
0936デフォルトの名無しさん
2007/02/05(月) 21:35:23わざわざありがと
漏れはそんなデバックしないからいいよ
0937デフォルトの名無しさん
2007/02/05(月) 22:08:33>構成マネージャでデバッグビルドに戻せば直る
情報、どうもです。
ツールメニューからオプションで、「ビルド構成の詳細を表示(I)」をチェック
しましたら、確かに「構成マネージャ」が「ビルド」メニューに現われました。
そこで見ましたところ、DebugとReleaseと選べるところはDebugとnっていました
が、やはりデバッグ中はロックが掛かっていました。
>>935
それで、先のオプションのところでの、「デバッグ」項目では、確かに
「エディトコンティニュ」というページがあったので、そこも見てみますと、
そこでも「エディトコンティニュを有効にする」にチェックが付いていました。
それでもやはりデバッグ時にはロックが掛かっているのでした。
まだほかに設定があるのでしょうか・・・・・。
0938デフォルトの名無しさん
2007/02/05(月) 22:10:30エディットできるのはブレークポイントで止まってるときだけじゃね?
0939デフォルトの名無しさん
2007/02/05(月) 22:33:45すみません、焦ってました。そうでした。今止めて確認したところ、
できるようになっていました!
まことにありがとうございました!!
0940デフォルトの名無しさん
2007/02/05(月) 22:34:450941デフォルトの名無しさん
2007/02/06(火) 00:40:35i
↓
in
↓
int
0942デフォルトの名無しさん
2007/02/06(火) 02:24:28リストを修正する。
CONTINUE
こんなことしてた覚えがあるな。
0943デフォルトの名無しさん
2007/02/06(火) 11:25:55new public virtual キーワード付きで作成し、ビルドして
Formに貼り付け、デザインモードで値をプロパティウインドウで入力、
実行して動作確認までOKだったが、もう一度デザインモードで
プロパティ・ウインドウを見ると、今度は設定したはずの値が消えて
しまっていて、Form画面上でもそれが表示されていない、
つまり、InitializeComponent()に記録されないという事態が起きました。
プロパティ値の頭には
[Category("・・・"),Description("****")]
[BrowsableAttribute(true)]
という修飾詞は付いていますが、
baseクラスに同じ名前のプロパティがあるときでも、set{}側で
それに代入しておいてやらず、勝手に派生クラス専用の変数に
入れただけだと、やはり上と同じ現象になりました。
これを解決し、Form側で InitializeComponent()に記録されるように
なるために他に処理が必要でしょうか?それとも何か根本的に間違って
いるのでしょうか?
0944デフォルトの名無しさん
2007/02/06(火) 11:32:38デザイナシリアライゼーションは出来るようになってんの?
0945デフォルトの名無しさん
2007/02/06(火) 11:39:33とりあえずこっちでは普通にできたからそのプロパティの実装晒して
0946デフォルトの名無しさん
2007/02/06(火) 11:56:44>>945
プロパティの記述は
new public virtual string Text
{
get
{
return _Text;
}
set
{
_Text = value;
// base.Text = value; ・・・(*1)
}
}
(*1) を生かすと InitializeComponent() に正しく記載されるようになり、
このままだと、プロパティページに書いても反映されません。
0947デフォルトの名無しさん
2007/02/06(火) 12:16:51>>943で
>Formに貼り付け、デザインモードで値をプロパティウインドウで入力、
>実行して動作確認までOKだった
の部分での「動作確認」は、自分のコード上でのTextプロパティの代入が
できていた、ということでしたが、コード上で何も代入しないと、プロパティ・ウインドウ
で書いた値も反映されず空白のままで、しかし実行が終わって戻ってくると、
プロパティ・ウインドウには書かれた値が残っていても、InitializeComponent()
には反映されていない、ということでした。
0948デフォルトの名無しさん
2007/02/06(火) 12:25:48これで不思議なのは、baseクラスを Control の場合は、Textプロパティは
存在するので base.Text への代入はできてよいのですが、baseクラスに
Panelを選んだ場合は Textプロパティは public にも protected にも存在しない
ので、 base.Text への代入はできないはずでしたが、どういうわけか、(*1)を
生かしてもビルドエラーにはならず、実行もできてしまって、InitializeComponent()
にも書き込まれているのでした。
理解が全然違っているのでしょうか・・・
0949デフォルトの名無しさん
2007/02/06(火) 12:27:35Formに複数個ボタンがあり、そのボタンを押すと色が変わるようにしたいと思ってます。
ただ、ボタンの数が30個以上あり「これって毎回書かなくてもできるんじゃないかな?」と疑問が出てきました。
今は
if (textBox1.Text == "A01")
{
btnA02.BackColor = btnA03.BackColor = btnA04.BackColor =
btnB01.BackColor = btnB02.BackColor = btnB03.BackColor = btnB04.BackColor =
btnC01.BackColor = btnC02.BackColor = btnC03.BackColor = btnC04.BackColor =
btnD01.BackColor = btnD02.BackColor = btnD03.BackColor = btnD04.BackColor =
btnE01.BackColor = btnE02.BackColor = btnE03.BackColor = btnE04.BackColor =
btnF01.BackColor = btnF02.BackColor = btnF03.BackColor = btnF04.BackColor =
btnG01.BackColor = btnG02.BackColor = btnG03.BackColor = btnG04.BackColor = btnG05.BackColor =
btnH01.BackColor = Color.White;
btnA01.BackColor = Color.LightCyan;
}
上記のように指定してます。うまく説明できずに申し訳ないですが、何かいい方法は無いでしょうか?
0950デフォルトの名無しさん
2007/02/06(火) 12:42:41コードを生成することもシリアライズのひとつだっつーの。
DesignerSerializationVisibilityやらSystem.ComponentModel.Design.Serializationでも
眺めてみろハゲ。
>>946
今環境がないので調べられんがMSDNに必ず元のに代入しろとか書いてなかったか?>Text
Nameと変な風に連動してた気がするからなんか独自にやっているのかもしれん。
0951デフォルトの名無しさん
2007/02/06(火) 12:46:41回答になってないが、現状でデザイナで操作できなくなるような変更はやめたほうがいいかもね。
何がしたいのかわからんけど、フォームのプロパティを置き換えなきゃできないことなの?
0952デフォルトの名無しさん
2007/02/06(火) 12:47:14{
if (c == sender) continue;
c.BackColor = Color.White;
}
((Control)sendor).BackColor = Color.LightCyan;
or
lastbtn.Backcolor = Color.White;
lastbtn = (Control)sender;
lastbtn.Backcolor = Color.LightCyan;
0953デフォルトの名無しさん
2007/02/06(火) 12:50:17質問とソースが微妙に一致してないぞ。
質問からは押したボタンの色が変わって欲しいように想像するが、
ソースはテキストボックスにセットされてる文字列からボタンを決めて、
そのボタンはシアン系、それ以外は白って感じだが。
何がしたいのかハッキリしてくれ
0954デフォルトの名無しさん
2007/02/06(火) 13:31:32PanelもControlですよ
0955デフォルトの名無しさん
2007/02/06(火) 13:36:23>今環境がないので調べられんがMSDNに必ず元のに代入しろとか書いてなかったか?>Text
>Nameと変な風に連動してた気がするからなんか独自にやっているのかもしれん。
そうだったんですか、どのプロパティも同じとはいかないのかもしれませんね。
これがBackColorで同様のことをやったときは、baseの方は透明にしておいても
独自変数の値がちゃんと出てきてたので、Textでも同じかと思ったのでした・・・
>>951
>現状でデザイナで操作できなくなるような変更はやめたほうがいいかもね。
もともとPanelにはTextプロパティがなかったので追加で実装する必要が出たのですが、
今改めてみてみると、ヘルプによるとControlクラスにも、実際には Public にも
Protected にも Text プロパティはリストに載っていないです、??
それで、別の、VBのプロジェクトと組み合わせたソリューション内でやってみると、
この Textプロパティに関する Control と Panel の区別はちゃんと出てきて、
Controlクラスから派生した方は base.Text への代入はOK、Panel クラスから
派生した方は base.Text への代入でビルドエラーが出て来ていました。
C#だけで単独でやっているとこの差が現われず、VBとの混用でやっている方では
これが出るということは、両者の設定に関係しているのでしょうか・・・?
0956デフォルトの名無しさん
2007/02/06(火) 13:41:37そうなのですが、>>954のような状況でした。
このことから、この Panel と Control の違いは、Text プロパティが
プロパティ・ウインドウに現われるかどうかの違いと一致していましたので
Panel ではたぶん Textプロパティを殺しているのではないかと思ったのですが
そうではないのでしょうか・・・。
0957949
2007/02/06(火) 14:05:25具体的な回答ありがとうございます。
まだ始めたばかりなので逆引き大全を片手に今眺めてます…orz
>>953
質問の仕損ないで申し訳ないです。
今はボタンを押したときにtextBox1に[A01]等のデータが入るようにしてます。
0958デフォルトの名無しさん
2007/02/06(火) 14:11:05>今改めてみてみると、ヘルプによるとControlクラスにも、実際には Public にも
>Protected にも Text プロパティはリストに載っていないです、??
この Control は System.Windows.Forms のではない別の Control でした、
System.Windows.Forms.Control では Text も BackColor もやはり存在してました。
Panel の方ももう一度みてみようと思いましたら、今度は Help で 「見つかりません」
になって探せなくなってしまった・・・、まずこっちから直さないと。。。。
0959デフォルトの名無しさん
2007/02/06(火) 16:53:26PanelにもTextはあるがこのクラスでは使用しないことになっている。
プロパティグリッドに表示されないのは非表示になってるから。
[Category("Appearance"), Description("hogehohe"), Browsable(true)]
public override string Text {
get { return base.Text; }
set { base.Text = value; }}
0960デフォルトの名無しさん
2007/02/06(火) 19:19:340961デフォルトの名無しさん
2007/02/06(火) 19:20:240962デフォルトの名無しさん
2007/02/06(火) 19:24:33private const int WM_CLOSE = 0x0010;
protected override void WndProc(ref Message message) {
base.WndProc(ref message);
switch(message.Msg) {
case WM_CLOSE:
MesssageBox.Show("test");
break;
default: break;
}
}
と書いたのですが、フォームを閉じてもWM_CLOSEを受け取れません。
終了処理などをさせたい場合、どうしたら良いのでしょうか!!!
お願いします。。。
0963デフォルトの名無しさん
2007/02/06(火) 19:25:430964デフォルトの名無しさん
2007/02/06(火) 19:26:470965デフォルトの名無しさん
2007/02/06(火) 19:27:03なんだってそんな低級な方法をとるよ
0966デフォルトの名無しさん
2007/02/06(火) 19:27:370967デフォルトの名無しさん
2007/02/06(火) 19:30:21他にもウィンドウプロシージャーで受け取りたいメッセージが多くある<
なんだってそんな低級な方法をとるよ
ウィンドウプロシージャーをオーバーライドしてイジくるのは低級だったのか・・・
⊂二二二( ^ω^)二⊃
0968デフォルトの名無しさん
2007/02/06(火) 19:31:01C++から来たの?
0969デフォルトの名無しさん
2007/02/06(火) 19:32:55変な例えかもしれないが。
アセンブラでウィンドウズプログラム作るのは低級。
0970デフォルトの名無しさん
2007/02/06(火) 19:34:270971デフォルトの名無しさん
2007/02/06(火) 19:34:48やむにやまれぬ事情もあるのかも知れんな(笑
WndProcを使うとして、base.WndProcを先に呼んでるからじゃない?
0972デフォルトの名無しさん
2007/02/06(火) 19:36:09えーと質問です。
class hoge {}
class hogelist : List<hoge> {
public String Value { get() { return ""; } }
}
private readonly hogelist hogelist = new hogelist();
public form1(.......) // こんすとらくた
{
InitializeComponent();
textBox1.DataBinding.Add("Text", terolist, "Value");
}
というコードを書いて、外部のフォームからこのフォームを表示させようとすると
form1->Show(); // ここで例外。
ArgumentExceptionはハンドルされませんでした。
DataSource のプロパティまたは列Valueにバインドできません。
パラメータ名:dataMember
と言われて、データバインディングに失敗します。
Show() のところから、ステップ実行すると IEnumerable.GetEnumerator() が呼ばれて
いて、これは素直に通過するのだけど通過した後の外部コードの中で例外が発生します。
どうすればデータバインディングできるのでしょうか?
0973デフォルトの名無しさん
2007/02/06(火) 19:37:56どこか思いこみがあるようですので間違いを指摘していただけると有り難いです。
Formを作成し、自分で新規にスレッドを作成していない状態で
(つまり自分はシングルスレッドのつもり)
aというメソッドに処理が入り、抜け出す前にbというメソッドに入っているようです。
シングルスレッドの状態でこのようなことはありえるのでしょうか?
尚、a、bともにリストビューのItem選択によるイベント起動がもとになっている物と
思われます。
0974デフォルトの名無しさん
2007/02/06(火) 19:38:03ネタですね…
0975デフォルトの名無しさん
2007/02/06(火) 19:38:32base.WndProc(ref message); を、switch文の後に回しても解決出来ました。
0976デフォルトの名無しさん
2007/02/06(火) 19:39:540978デフォルトの名無しさん
2007/02/06(火) 19:44:37どうせDoEventsしてるとか言うオチだろ。
0979デフォルトの名無しさん
2007/02/06(火) 19:49:36msdnのサンプルソースとよくみくらべてみて。
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.databindings(VS.80).aspx
0980デフォルトの名無しさん
2007/02/06(火) 19:50:03>どうせDoEventsしてるとか言うオチだろ。
していません。
一応検索してみましたが、つかってません。
ちなみに、しょうがないので、lockもしてみましたがうまくいきません。
AutoResetEventとかでしたら、同一スレッド間でも排他制御ができるのでしょうか?
0981デフォルトの名無しさん
2007/02/06(火) 19:53:29「同一スレッド間でも排他制御」って具体的にはどういうことだ?
同一スレッド「間」???
0982デフォルトの名無しさん
2007/02/06(火) 19:54:49ちげーよ
多分ネタだよ。
>hogelist
>terolist
0983デフォルトの名無しさん
2007/02/06(火) 19:56:41コードが適当すぎてワラタ
0984デフォルトの名無しさん
2007/02/06(火) 19:58:00aがbを呼んでるというオチ?
0985デフォルトの名無しさん
2007/02/06(火) 19:59:09>思われます。
ここらを詳しく書かないとダメ
void a()
{
b();
}
って書いてないよなw
0986デフォルトの名無しさん
2007/02/06(火) 20:00:00>「同一スレッド間でも排他制御」って具体的にはどういうことだ?
レスした後自分でも書いてて変だと思った。
まあ、>>973の状況でわけわかんなくなっていると思ってください
一応プロセスはThread.CurrentThread.GetHashCode()で同一かどうか見てるつもりです。
(これも変?)
>>984
>aがbを呼んでるというオチ?
a,bとも単にdllの関数を呼ぶためのラッパーですのであり得ません
0987デフォルトの名無しさん
2007/02/06(火) 20:03:09dll内で呼んでるとか。
0988デフォルトの名無しさん
2007/02/06(火) 20:04:220989973
2007/02/06(火) 20:06:13UnLha.dllの関数を呼び出すだけです。
(lockとか例外処理とかどうしようもなくてつけてます)
基本”S”と”E”が交互に表示されるはずですが、”S”が続くケースがあり、その後”E”が続くことが
あるため、メソッドの途中でメソッドが呼ばれている物と判断しています。
public static int UnlhaLck(IntPtr hwnd, string szCmdLine, StringBuilder SzOutput, int dwSize)
{
int ret;
lock (obj)
{
System.Diagnostics.Debug.WriteLine("S1" + Thread.CurrentThread.GetHashCode().ToString());
try
{
ret = Unlha(hwnd, szCmdLine, SzOutput, dwSize);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
ret = -1;
}
System.Diagnostics.Debug.WriteLine("E1");
}
return ret;
}
0990958
2007/02/06(火) 20:08:53ありがとうございます、オンラインヘルプでみましたら、やはり Panel では
Text プロパティは 「無効になっています」 とのことでした・・・。
それでも、やはり Set{}側で その無効な Text プロパティに代入さえして
おけば InitializeComponent() に書き込まれるらしいことが確認できました。
つまり、Control ベースでも、Panelベースでも同様にできそうでした。
ソリューションに、これらのコントロールも内部のプロジェクトとして入れ込んで
いたのですが、これら部品のコントロールをビルドしたら、一旦 VS2005 自体を
終了し、また再度起動してソリューションをオープンし直してからやってみたところ、
VBとの混用側でも InitializeComponent() に記録されるようになりました。
InitializeComponent() に Text プロパティが保存されなかった問題の原因は、
どうも、これら部品クラスのビルド後の取り込みが行なわれていなかったためかと
思われ(「ソリューションのビルド」で行なってもできませんでした・・・)、
VB との混用で行なう場合は面倒でも VS2005 を再起動する必要があるの
かもしれません・・・。
おかげさまでとりあえず InitializeComponent() に取り込むことができました、
ありがとうございました。
0991デフォルトの名無しさん
2007/02/06(火) 20:09:29ネタ?
0992デフォルトの名無しさん
2007/02/06(火) 20:11:50スタックトレースはしてみたのか?
0993デフォルトの名無しさん
2007/02/06(火) 20:12:19MSDNはオンラインで知っていますが、それ以前に、どうして Panel のメンバーぐらいの
参照が オフライン側のほうでできなくなってしまったのか不思議でした。
0994デフォルトの名無しさん
2007/02/06(火) 20:13:190995デフォルトの名無しさん
2007/02/06(火) 20:14:55探し方がまずいんじゃねーの
0996デフォルトの名無しさん
2007/02/06(火) 20:16:19Text は特別なのですか、やはり同一名称は new キーワードでも
問題あるのでしょうか・・・・・?
0997デフォルトの名無しさん
2007/02/06(火) 20:17:51前には見たことはあったのですが、今日はそのページの参照リンクから叩いたのですが
飛んで行かず、「みつかりません」が出てきたのでした。
0998デフォルトの名無しさん
2007/02/06(火) 20:18:06残念ながら見方が分かりません。
さしあたって、>973の質問のシングルスレッドの状態では、a,bが同時に実行されることは
ないと思って良さそうですね(あたりまえでしょうけど)。
どうもありがとうございました。もうちょっとがんばってみます。
0999デフォルトの名無しさん
2007/02/06(火) 20:19:18virtual にすると、 override か書けないとのことでした。
どうもでした。またよろしくです。
1000デフォルトの名無しさん
2007/02/06(火) 20:19:5910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。