ふらっとC#,C♯,C#(初心者用) Part23 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/01/11 15:41:00
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part22
スレリンク(tech板)

2:デフォルトの名無しさん
08/01/11 15:42:43
C#, C♯, C#相談室 Part44
スレリンク(tech板)

C♯, C#相談室 Part34
スレリンク(tech板)

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
スレリンク(tech板)

Windows Live プログラミング
スレリンク(tech板)

初心者のためのプログラミング言語ガイド Part6
スレリンク(tech板)

3:デフォルトの名無しさん
08/01/11 15:44:26
なかなかよろしいスレタイでございますね

4:デフォルトの名無しさん
08/01/11 18:00:44
>>1


5:デフォルトの名無しさん
08/01/11 19:26:59
お聞きしたいのですが
ブラウザ(IE)上に表示されたテキストボックスからテキスト取得ってできるんですかね?
サイトはJAVAアプレットで書かれているものです
参考サイト、ググるキーワードなどあればご教示下さい

宜しくお願いします

6:デフォルトの名無しさん
08/01/11 19:39:32
>>5
まともな方法じゃ無理、やれたとしてもC#の範疇じゃないからWin32スレにでもど〜ぞ。

7:デフォルトの名無しさん
08/01/11 19:51:21
>>6
そうですか・・・。

ではWin32スレに行ってきます。
ありがとうございました

8:デフォルトの名無しさん
08/01/11 20:20:37
C#のお勉強で小物のスクリプトをC#でリプレースしてるんですが
IDEでプロジェクト作ってというのはちょっと大げさです。
軽めでC#のメソッドの補完をしてくれるテキストエディタってないですか?

9:デフォルトの名無しさん
08/01/11 20:25:49
新しいプロジェクトから空のプロジェクトを作って自分でソースコードを追加すればいいんじゃない。

10:デフォルトの名無しさん
08/01/11 20:26:26
VSのインテリセンス触ってみては?
たぶんC#やるんならVSが一番いいと思うけど

11:デフォルトの名無しさん
08/01/11 20:29:50
VC#なしのC#なんて存在価値無いよ

12:デフォルトの名無しさん
08/01/11 22:40:10
Properties.Settings.Default.hogehoge
の値を初期状態にしてデバッグ開始する方法ってないの?

13:デフォルトの名無しさん
08/01/11 22:42:13
やれば?

14:デフォルトの名無しさん
08/01/11 22:50:31
コアルータの切り替え失敗したんだね…

15:デフォルトの名無しさん
08/01/12 01:36:32
Visual C# 2005 Express Editionでアプリケーションを作っているのですが、
こいつのデータベースマネージャからでも、ソースコードからでもよいので
MySQLサーバにアクセスしたいと考えております
ぐぐってみたのですが、VC#2005EEではMSSQLかアクセスしか選べないと書いてあるところもありました
やっぱフリーではアクセスできないんでしょうか?

16:デフォルトの名無しさん
08/01/12 01:39:01
>>15
URLリンク(www.mysql.com)

17:デフォルトの名無しさん
08/01/12 01:42:34
>>16
ここ初心者スレなんだしもうちょっと丁寧に書いてあげれば?

18:デフォルトの名無しさん
08/01/12 01:43:05
自分で書けよ^^;

19:デフォルトの名無しさん
08/01/12 01:45:47
>>17
わからないなら何が判らないか聞けよ

20:15
08/01/12 01:53:31
>>16の方が教えてくれたツール?をインストールしました。
けどこのあと結局どうやって接続していいかわかりません
VSのデータベースマネージャとかからできるのかーとか思っていますが・・・

21:デフォルトの名無しさん
08/01/12 02:16:00
>>20
>ソースコードからでもよいので
>VSのデータベースマネージャとかからできるのかーとか思っていますが・・・
どっちだよw

「Visual C# 2005 Express MySQL」、「C# MySQL」でググってみた?
前者はアドイン、後者は接続方法が先頭付近にあるよ?

22:デフォルトの名無しさん
08/01/12 10:20:14
ExpressはMS公式のアドイン以外使えないんじゃなかった?

23:デフォルトの名無しさん
08/01/12 10:55:36
今練習でデータベースを扱うプログラムを組んでいるのですが

ADO.netデータアダプターを利用した

24:23
08/01/12 10:58:44
済みません・・・・改めて

今練習でデータベースを扱うプログラムを組んでいるのですが
da.update(dt);
でデータのアップデートをする場合 トランザクションは自動的に内部処理されて
エラーはロールバックされると考えていいのでしょうか?
それとも確実に行うにはすべて手動で設定していった方が良いのでしょうか?

25:デフォルトの名無しさん
08/01/12 12:09:20
>>21
ぐぐってみました
前者のアドインは有料なのね・・・
後者の接続方法でやってみます
もっと簡単に接続できればいいんだけどなー

26:デフォルトの名無しさん
08/01/12 13:01:29
ODBC使う手もあるけどな
まあMySQL Connector/Netあたりでいいべ

27:デフォルトの名無しさん
08/01/12 13:09:35
VSからMySQLQueryBrowserみたいなGUI環境で接続できればいいのにね

28:デフォルトの名無しさん
08/01/12 13:52:12
有料のにはあるみたいだけどな

29:デフォルトの名無しさん
08/01/12 13:55:01
>>24
トランザクションは使われていない。
System.Data.Common.DbTransactionか
System.Transactions.TransactionScopeを合わせて使う。



30:デフォルトの名無しさん
08/01/12 16:36:16
C# + VS2005 ExpressでのWindowsフォームアプリケーションの
開発に関してお聞きしたいのですが、フォーム(Form)上にテキストボックス(TextBox)
が配置されていて、あるタイミングでクラス(Woker)のメソッド(Method)を呼び出します。
この時、UIをフリーズさせないようにMethodはデリゲートとBeginInvokeを使用した
非同期呼び出しで呼び出され、処理終了後にコールバック(MethodDoneEvent)を使用してTextBoxに
取得した内容を表示します。

Methodでは「任意のWebサーバにHTTPで接続しファイルをダウンロードしてくる」
といった処理が行われているのですが、その際Methodの中で
1.通信の準備
2.Webサーバへの接続
3.ヘッダの取得
4.ファイルの取得
5.通信の後始末
と5つのステップの処理が行われています。

この時1〜5の処理の実行と結果を、逐一Form上のTextBoxに表示したいのですが
MethodDoneEventが呼ばれる時には既に5までの処理が完了しているので
リアルタイム表示にはなりません。
1〜5までの処理をリアルタイムでTextBoxに表示させたい場合、1〜5の各処理を分割し
それぞれを非同期呼び出し・コールバックからの結果取得・反映を行う必要があるのでしょうか?
それとも他に呼出元のFormに対して情報を通知する手段は存在するのでしょうか?

単純にWorkerにFormのインスタンスを保持させて、Method内で直接Form上のTextBoxを更新させれば
早いのですが.NET Frameworkの設計で「フォームメソッド以外にフォームの要素を変更させるのは好ましくない」
といった感じのことを聞いた事があるので・・・・


31:デフォルトの名無しさん
08/01/12 16:42:49
>>30
BackgroundWorker

32:デフォルトの名無しさん
08/01/12 16:46:19
「フォームメソッド」をInvokeすりゃいいんじゃね?

BackgroundWorker使って
その度にReportProgressでProgressChangedイベント起こせば簡単だけど

33:デフォルトの名無しさん
08/01/12 16:58:40
>>31-32
即レスありがとう御座います!

BackgroundWorker・・・こんな便利なものがあったんですね・・・
早速使ってみたいと思います

34:デフォルトの名無しさん
08/01/12 19:05:30
知識が及ばず、検索用のキーワードだけでも良いので教えてもらいたいです。

ファイルをコピーするユーティリティを作ってみていたのですが、少ないファイルなら良いのですが
それが大量だったり大容量だったりするとすごく時間がかかってしまいます。
それとファイルのコピー中はフォーム上のボタンやラベル等々はenable=falseとして操作できないようにしています。

それで肝心のエラーなのですが、同じ処理をさせても出てくれませんorz
確かポンプだとかメッセージがないとか長時間だかとかといった具合の言葉があったのは覚えています。

なのでこういった時間のかかる処理をするときの作法というかベターな方法みたいのはないでしょうか?

35:デフォルトの名無しさん
08/01/12 19:07:12
ryの使い方を再認識した

36:34
08/01/12 20:00:34
すいません、何度かチャレンジしてたら出せました

マネージ デバッグ アシスタント 'ContextSwitchDeadlock' では '(ファイルへのパス)' に問題を検出しました。
追加情報: CLR は、COM コンテキスト 0x1b08b8 から COM コンテキスト 0x1b0a28 へ 60 秒で移行できませんでした。ターゲット コンテキストおよびアパートメントを所有するスレッドが、
ポンプしない待機を行っているか、Windows のメッセージを表示しないで非常に長い実行操作を処理しているかのどちらかです。この状態は通常、パフォーマンスを低下させたり、
アプリケーションが応答していない状態および増え続けるメモリ使用を導く可能性があります。この問題を回避するには、すべての Single Thread Apartment (STA) のスレッドが、
CoWaitForMultipleHandles のようなポンプする待機プリミティブを使用するか、長い実行操作中に定期的にメッセージをポンプしなければなりません。

こいつです、警告っぽいです


37:デフォルトの名無しさん
08/01/12 20:02:09
ネタじゃないの?

>それで肝心のエラーなのですが、

突然話が出てくるんだな。
話の上の部分書き忘れたのか、ゆとりなのか?

38:デフォルトの名無しさん
08/01/12 20:07:07
メッセージポンプが滞る様な何かをしてるんだろうけど

何をしたくて
何をしたら
何が起きたのか

をちゃんと書けよ

39:デフォルトの名無しさん
08/01/12 20:07:17
スレッド作って時間がかかる処理を実行させればいいんじゃないの

40:34
08/01/12 20:07:50
>>37
ええっとどこが突然なのか・・質問の原因を前におけということなら質問の原因がわからないので後に置きました

それで、という接続詞の話ならば間違いなく正しいです、1つ意味を進める意味合いです

41:デフォルトの名無しさん
08/01/12 20:09:18
知識が及ばず、検索用のキーワードだけでも良いので教えてもらいたいです。
(なにをしたら)
ファイルをコピーするユーティリティを作ってみていたのですが、少ないファイルなら良いのですが
それが大量だったり大容量だったりするとすごく時間がかかってしまいます。
それとファイルのコピー中はフォーム上のボタンやラベル等々はenable=falseとして操作できないようにしています。
(なにがおきた(+後述))
それで肝心のエラーなのですが、同じ処理をさせても出てくれませんorz
確かポンプだとかメッセージがないとか長時間だかとかといった具合の言葉があったのは覚えています。
(なにをしたくて)
なのでこういった時間のかかる処理をするときの作法というかベターな方法みたいのはないでしょうか?

こうしてやらないとわからないか

42:デフォルトの名無しさん
08/01/12 20:10:17
エラーが出るとか書いてないのに
いきなりエラーの説明されても・・・

どこで出たエラーなんだ?

43:デフォルトの名無しさん
08/01/12 20:11:37
>>41
肝心のエラーとか言われても、それまでにエラーの話なんて一言もないじゃないか。

44:デフォルトの名無しさん
08/01/12 20:15:02
煽るやつ荒らすやつに一々反応しないでくれ

45:デフォルトの名無しさん
08/01/12 20:16:09
わかんないけど上のレスを見る限りFormで長い処理をやらせるときは
BackgroundWorkerを使えばいいみたいだな

46:デフォルトの名無しさん
08/01/12 20:29:34
こうやってタコは成長していくんだな
いきなりMSDNなんて引いちゃだめだ

47:37
08/01/12 20:31:36
嵐じゃないよ。アホは放置するというのなら
>>34を放置しろ。
内容を適当に書き換えてやろうか?
どこが変わったか読んでみ。

ファイルをコピーするユーティリティを作ったのですが、大量のファイルや大容量のファイルを
コピーすると処理にかなり時間がかかって、途中でエラーが出ます。
それで肝心のエラーなのですが、同じ処理をさせても出たり出なかったりしますorz
内容は(中略)
こういった時間のかかる処理をするベターな方法はないでしょうか?


48:デフォルトの名無しさん
08/01/12 20:37:41
今後>>47に触る奴は荒らしとみなす

49:デフォルトの名無しさん
08/01/12 20:39:43
わたしって〜じゃないですか〜


50:デフォルトの名無しさん
08/01/12 20:44:03
>>47
> 内容は(中略)
> 内容は(中略)
> 内容は(中略)
> 内容は(中略)


51:デフォルトの名無しさん
08/01/12 20:49:26
C#でユニークID、親のユニークID、表示用のラベルを持ったDataTableを
ListVewにバインドしてツリーを作る方法ありますかね
やっぱコード書いてツリー作るしかない?

52:デフォルトの名無しさん
08/01/12 21:13:50
>>51
ListView?

53:デフォルトの名無しさん
08/01/12 21:44:20
かちゅーしゃだとスレタイが化けるのはおれだけ?
IEその他だとなんともない

「ふらっとC#@`C♯@`C#(初心者用) Part23」
となっている



54:デフォルトの名無しさん
08/01/12 21:45:44
ありゃ書き込んだらカキコはまともに見える
"," が@と`になる

55:デフォルトの名無しさん
08/01/12 21:47:33
回答は(後略)

56:デフォルトの名無しさん
08/01/12 22:04:14
>>52
TreeViewでした(;´д`)

57:デフォルトの名無しさん
08/01/12 23:03:11
PictureBox上でToolTipを表示するのに
マウスカーソルの位置でメッセージ内容を変えてます

Popupイベントでメッセージを変えてるんだけど
ただ、これだどPictureBoxの中でマウスカーソルが移動した場合に
ToolTipが再度表示されなくて悩んでます

同じコントロール上でマウスカーソルを移動したときに
ToolTipを再表示する設定ってできますか?

58:デフォルトの名無しさん
08/01/13 02:07:30
親フォーム(クラス Form1)で、BackgroundWorkerのbgwを作り裏で処理をさせています。
また、Form1から子フォーム(クラス FormOption)を呼び出せるようになっています。

ここで子フォームのボタン(btnOK)を押されたときに、裏処理を中断させたいんですが、どうしたらいいでしょうか。。。
親フォームからだったらクラスが同じなのでbgw.CancelAsync();で良いと思うんですが、クラスが違うので使えません・・・

//まだクラスとかインスタンスとかの概念がよく理解してないのが問題だと思います(´・ω・)
//とりあえず似たようなケースで、異なるクラス間で変数いじったりするならstaticにすればいいってことは分かったんですが・・・

59:デフォルトの名無しさん
08/01/13 02:18:13
子フォームがShowDialogなら、返値みて判断。
Showでキャンセルした時に閉じるなら、子フォームにIsCancelledプロパティ用意して子フォームのClosedイベントでチェック。
一般的には子フォームにCancelledイベントを作ってキャンセルボタン押されたら発生、親フォームはイベントにキャンセル処理を設定。

60:デフォルトの名無しさん
08/01/13 02:18:20
別々のクラスオブジェクトのメソッドから共通のログファイルに書き出ししたい場合は
どのようにすればよろしいのでしょうか?

61:デフォルトの名無しさん
08/01/13 02:21:26
>>60
log4net

62:デフォルトの名無しさん
08/01/13 02:26:47
外部のライブラリを使わない方法を教えていただけませんか

63:デフォルトの名無しさん
08/01/13 02:35:51
>>62
内部に取り込む?

64:デフォルトの名無しさん
08/01/13 02:39:23
>>57
自分でやる。定番のルーチンだと思うけど。

以前の領域かどうか判別して、同じなら何もしない。
違ったらtoolTip.Active をいったんfalse にしといてSetToolTip設定、
Active をtrueに。

65:デフォルトの名無しさん
08/01/13 02:42:15
>>62
ユーティリティクラスの静的メソッドで書けばよかろうもん

66:デフォルトの名無しさん
08/01/13 04:52:46
TextBoxに対して、Ctrl+Vとかのショートカットを送る方法ってありますか?
右クリックメニューに独自処理を追加したいけど難しそうなので、独自処理+標準のコピーペーストとかをもつ
メニューを作りたいと思っています。

67:デフォルトの名無しさん
08/01/13 04:57:15
上記自己解決。
URLリンク(bbs.wankuma.com)
さんざん探してから書いたのに、書き込み後、一発目の検索で発見。
しかも、普通にメソッドで用意されてた。

68:デフォルトの名無しさん
08/01/13 06:30:26
まあ困ったらWeb検索するより先にMSDN/ヘルプを見ろってことだな

69:デフォルトの名無しさん
08/01/13 07:19:16
お〜い山田くん、これテンプレに貼っといて

URLリンク(msdn2.microsoft.com)

70:デフォルトの名無しさん
08/01/13 11:04:34
>>60
普通にTraceかTraceSource使えば?

71:デフォルトの名無しさん
08/01/13 12:02:17
tabControlに貼り付けたtoolStripが、勝手に移動したり、visible=falseになったりして困っています。
GripStyle=hiddenです。
ロックかけてもお構いなし。なにか良い回避策ありませんか?
C# 2008 Express Editionです。

72:デフォルトの名無しさん
08/01/13 13:05:39
コンボボックスの値を取得したいのですが
Itemには、No1〜No5までの5つの文字があって
ComBoBoxのテキストには(選択してください)
という文字列が入っています
この時、プルダウンメニューからアイテムを選択しなかった時は
ComboBox.Textには(選択してください)が入ってしまうのでしょうか?
またアイテムが選択されてる状態の時は、ComboBox.Textで取得できるのでしょうか?

73:デフォルトの名無しさん
08/01/13 13:30:08
(´・ω・`)しらんがな

74:デフォルトの名無しさん
08/01/13 15:03:01
そんなもん実験すりゃいいだろうが

75:デフォルトの名無しさん
08/01/13 17:13:08
 配列の巡回を持った言語ならC#に限らない話だと思うのですが、
foreach中に配列の要素を消したい時、一番スマートなやり方としてはどんな物が有るでしょうか?
 どうしてもforeachが2回以上必要な気がします。
 プログラミングがうまい人ならもっとマシな方法をしていませんでしょうか?
下に目的の代換えソースを書いてみました。


//あまり綺麗では無いと思う例---
/*
 「予期しない動作を防ぐため、コレクション内容の変更には使用しないでください。」という制限の為
削除する要素へのキーを別途用意した配列に入れてその配列を"又"foreachしています。
*/
foreach(OBJ val in table)
{
 if (val.needDel) delArray.Add(val.key);
}

foreach(key key in delArray) //
{
 table.Remove(key)
}
delArray.Clear()


76:デフォルトの名無しさん
08/01/13 17:21:01
前スレでさんざん水掛け論やってたな確か

77:デフォルトの名無しさん
08/01/13 17:24:07
>>75
つ RemoveAll()

78:デフォルトの名無しさん
08/01/13 17:24:55
そうだな。
元がListBoxだったのにそれそっちのけでなんやかややってたなw

79:デフォルトの名無しさん
08/01/13 17:28:20
OBJとかkeyとかなぜか先頭小文字のneedDelとかvarと紛らわしいvalとか
名前ばっかり気になるw

80:デフォルトの名無しさん
08/01/13 17:29:35
Smalltalk風ですな

81:デフォルトの名無しさん
08/01/13 17:34:54
つうかあの時の奴と全く同じミスをしとる。 >>75
アイテムで削除すると同じキーが複数存在した場合にうまくいかんぞ。

82:デフォルトの名無しさん
08/01/13 17:35:17
foreachは消すためには使えない
そもそも配列はAddもRemoveもできない

83:デフォルトの名無しさん
08/01/13 17:36:01
あらしや釣りでは無いです。

>76 >78
前スレ見てきました。 C#では
ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
あたりが使えそうですね。 これはつまり匿名メソッド?

>79 >80
borland (Pascal?)から来ました。 var,valとalignはテキストエディタで色分けしています。


84:デフォルトの名無しさん
08/01/13 17:38:43
なんで素直にRemoveAll()じゃあかんの?
たしかにあのメソッド名は大変紛らわしいが、アイテムごとに条件を見て
削除するという目的にまさにぴったりなんだが。

85:デフォルトの名無しさん
08/01/13 17:38:50
>>75
for (i = list.Count - 1; i >= 0; i--)
{
if (...)
{
list.RemoveAt(i);
}
}

こんな感じかな。

86:85
08/01/13 17:42:13
しまった。RemoveAll()を忘れてた。


87:デフォルトの名無しさん
08/01/13 17:43:22
>>75の言う配列というのがList<T>のことならRemoveAll一択

88:デフォルトの名無しさん
08/01/13 17:54:26
前スレから見に戻って良かったです。前スレではRemoveAll()出てないし。

ヘルプが2割も理解できてませんが、List<T>::RemoveAllが良いのですね?
Delegateを返す関数を作ってvalueに入れる??

どうでも良い話。自分が一昔前にborlandつかってた頃のソースは小文字のみでした。
何処で聞いたんだっけな?


89:デフォルトの名無しさん
08/01/13 17:54:26
AddやRemoveが使えてるから、配列じゃなくてList<T>なんだろうな。

table.RemoveAll(x => x.needDel)
といったところか

90:デフォルトの名無しさん
08/01/13 17:55:27
>89
ありがとう。 まとまりました。

91:デフォルトの名無しさん
08/01/13 18:17:25
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのループで行うにはどうすればいいの?

92:デフォルトの名無しさん
08/01/13 18:25:38
RemoveAllかなんかで削除してからその他の処理をすれば?

93:デフォルトの名無しさん
08/01/13 18:28:06
RemoveAll厨必死杉

94:デフォルトの名無しさん
08/01/13 18:28:59
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのforeachで行うにはどうすればいいの?

95:デフォルトの名無しさん
08/01/13 18:33:32
forを使うといい

96:デフォルトの名無しさん
08/01/13 18:49:22
URLリンク(bbs.wankuma.com)

97:デフォルトの名無しさん
08/01/13 18:57:39
namber?

98:デフォルトの名無しさん
08/01/13 19:00:00
cgiの仕様だそうだからそっとしといてやれ。

99:デフォルトの名無しさん
08/01/13 20:25:32
XPの音量のプロパティのうちWaveとかの特定のものを操作したいのですが
.NETのライブラリを探してもないようです。
Win32APIを使うしかないのでしょうか?

100:デフォルトの名無しさん
08/01/13 20:32:46
うん
まあちょっと検索すりゃC#ラッパとかすぐ見つかるだろうけど

101:58
08/01/13 20:57:10
>>59
あ・・・ShowDialogって値返してたんですね(´・ω・)戻り値見る方法ですんなり解決しました。ありがとうこざいました。

102:デフォルトの名無しさん
08/01/13 21:43:33
ウインドウを表示するにはどうすればいいのでしょうか?

103:デフォルトの名無しさん
08/01/13 22:10:57
>>102
Form.Show();
とかってことじゃなくて?もうちょっと具体的に言ってもらえればアドバイスもしやすいと思うよ

104:デフォルトの名無しさん
08/01/13 22:44:18
ShowWindow( HWND, int )

105:デフォルトの名無しさん
08/01/13 23:07:42
すいません。

C# 2005 Express Editionを使っているのですが、
フォームのAcceptButtonに設定されているボタンの
クリックイベントをキャンセルするには、
どうしたらよいのでしょうか?

private void buttonOK_Click(object sender, EventArgs e)
{
 if (エラーチェック)
 {
  エラーならキャンセル
 }
以下略

というようなことがやりたいのですが、
フォームのAcceptButtonに設定されているため、
ウィンドウが消えてしまいます。

AcceptButtonに設定するのをあきらめるしかないのでしょうか?

106:デフォルトの名無しさん
08/01/13 23:20:25
うん。

107:デフォルトの名無しさん
08/01/13 23:25:55
VB6.0のフォームデザイナみたいにフォームに点が表示されて
コントロールが配置しやすくなる設定はできないんでしょうか?

108:デフォルトの名無しさん
08/01/13 23:34:01
>>107
formのプロパティーにあるよ。

109:デフォルトの名無しさん
08/01/13 23:41:20
いろんなサンプル見て調べながら、

public void myReceive (){
   remoteEP = null;
   udp.BeginReceive(new AsyncCallback(ReceiveCallback), null);
}

private void ReceiveCallback (IAsyncResult ar){
   byte[] ReceivedBytes = udp.EndReceive(ar, ref remoteEP);
}

udpはUDPClient型
remoteEPはIPEndPoint型

こんなかんじでバックグラウンドでUDPの受信待機&受信をするコードを書いてみたんですが、受信待機状態を中断するにはどうしたらいいんでしょうか・・・良い感じのメソッドとかも見つからなくて困ってます。。。

110:デフォルトの名無しさん
08/01/13 23:42:40
>>106

むう。。。
ありがとうございます。

111:デフォルトの名無しさん
08/01/14 00:04:36
>>108
ツール→オプション→Windowsフォームデザイナ→レイアウト設定でできました

112:デフォルトの名無しさん
08/01/14 08:02:02
Windows2003R2 x64のWndProcにNM_CUSTOMDRAWが飛んでこないんですが、なんで?
x86を明示してビルドすると動くのですが

113:デフォルトの名無しさん
08/01/14 09:21:23
>>112
64bit環境ではIntPtrが64ビットになるから、これが影響してないか?

114:デフォルトの名無しさん
08/01/14 15:33:00
あるバイナリファイルの100万バイト目から10バイトだけデータが欲しいのですが、
こういう時でも律儀に100万バイト分のデータを読み込まないと取得できないのですか?

115:デフォルトの名無しさん
08/01/14 15:36:57
>>114
Seekがあるよ。

116:114
08/01/14 15:46:15
>>115
BaseStream.Seek()メソッドを利用することで取得できました
ありがとうございました

117:デフォルトの名無しさん
08/01/14 16:57:24
File.Copyメソッドについて質問です。

このメソッドを利用して、色々とコピーしてみていると、たまにエラーが出ます。
アクセス権の問題だったりするのですが、例えば
File.Copy(From, To);
このFromを読み込み可能に、Toを読み書き可能にする、というのは無理なんでしょうか?

118:デフォルトの名無しさん
08/01/14 17:00:24
質問の意味がよく分かりませんが。。。
そんな質問してると「日本語でおk」って書かれちゃうと思うぞw

119:117
08/01/14 17:04:24
えっと、こうかけばよかった

File.Copy(From,To);
この時、FromとToのアクセス権の設定の問題でエラーが出るのを回避したいです。
どうすれば良いでしょうか?

120:デフォルトの名無しさん
08/01/14 17:07:31
エラーが出ないようにチェックしてからコピーすればいいじゃまいか。
それともアクセス権を回避して無理やり書き込みたいってことか?

121:デフォルトの名無しさん
08/01/14 17:10:00
無視しようと思えば無視して横車を押せるようなアクセス権なら
そんなものに意味などないと思うんですが間違ってるでしょうか……

122:デフォルトの名無しさん
08/01/14 17:11:10
無理にというより、設定し直してやりたいです


123:デフォルトの名無しさん
08/01/14 17:13:19
>>122
同じことだと思いますが……
設定して「無理に」横車を押したい、と

124:デフォルトの名無しさん
08/01/14 17:16:07
アクセス権がないのにアクセス権を変える権利はあるのかよ。
どう考えても設定間違ってるだろw

125:デフォルトの名無しさん
08/01/14 17:16:29
それを言ったらPCの存在を否定してそうですが……

設定を変えるのは無理そうですね、ファイルアクセス権に限ってというよりファイルアクセス権だからなのかな
世のバックアップソフトは一体どうなってるんだろう

126:デフォルトの名無しさん
08/01/14 17:16:29
ふらっとなのにあげあしとりしか存在しないのかね

それも反応早いし、このスレもういらないだろ正直

127:デフォルトの名無しさん
08/01/14 17:17:23
前スレで「フォームの内容を保存」がどうのと騒いでた人ですが、
なるほど。拡張子がいかなるものであろうと、テキストファイルやHTMLファイルみたいな
テキスト主体のデータをファイルに保存するにはテキスト形式で書き出し、
画像ファイルや音楽、動画ファイルといったデータを保存するにはバイナリ形式で書き出せば良かったのですね。

あとは書き出したい内容を然る場所に書けば、と。

その節は大変お騒がせして、お恥ずかしい(*^ ^*;
(報告したかっただけなので、流してくださって構いません)

128:デフォルトの名無しさん
08/01/14 17:19:27
>>126
揚げ足取りってw
俺はそうは思わないけど、君がそう思うのなら自分の言葉に責任持てよ。

つまり揚げ足取りではない(繰り返すけど揚げ足とってるつもりないぞ)、
真面目な回答をぜひ頼むよ。

それとも自分棚上げ野郎なのか君は。

129:デフォルトの名無しさん
08/01/14 17:25:46
円の描画でつまづいています。

円の内側は塗りつぶしができるのですが,
円の外側を塗りつぶしたい時はどうしたらいいでしょうか



130:デフォルトの名無しさん
08/01/14 17:31:12
>>125
アクセス権の存在意義について考えろ。
アクセス権をオーバーライドできたらアクセス権の意味がないだろ。
バックアップソフトは普通はアドミン権限で実行する。

>>129
円の形でクリッピングして塗りつぶせばいいんじゃね?

131:デフォルトの名無しさん
08/01/14 17:38:45
>>130
解決しました。
ありがとうございます。
勉強になりました。


132:デフォルトの名無しさん
08/01/14 17:44:37
コントロールでkeydownを所得するとき
個々のkyedownイベントでとる方法とPreviewKeyDownのどちらが良いのでしょうか?

ふつうにkeydownで所得できるようなイベントの時はどっちでも同じ?

133:デフォルトの名無しさん
08/01/14 18:49:21
所得ってなんだ…

134:デフォルトの名無しさん
08/01/14 19:31:44
スクロールのついているフォーム全体をキャプチャを目的に,
スクロールを操作してキャプチャを試みています。

コントロールを指定して画像を取得することができたのですが
スクロールは制御すらできません。
なにかよい助言をしていただけませんか?




135:デフォルトの名無しさん
08/01/14 20:31:46
>>133
また揚げ足かよ!と思ったら、その上も所得と書いてる・・・
たぶん132はガチでずっと、取得を所得と思って使ってきたんだろねw

>>132
2.0以降なら、PreviewKeyDownで取得すべき。
KeyDownは発生しないキーがある(IsInputKeyプロパティで発生可になるけど)

136:デフォルトの名無しさん
08/01/14 20:49:19
>>126
揚げ足を取られるのは、アホな質問をした場合に限られる。
まともな質問であればまともな回答が返ってくる。

とられた場合はまずは自分がアホなことを言っていないかを振り返ってみよう。

137:134
08/01/14 21:19:13
どなたかおわかりになりませんか?
いろいろ調べてみましたが,具体的にどのようにしたらいいのか
さっぱり分かりませんでした。

138:デフォルトの名無しさん
08/01/14 21:21:43
WM_SCROLL投げたら?

139:デフォルトの名無しさん
08/01/14 21:21:44
Formの背景色だけを半透明にする方法はないでしょうか?
Opacityオプションで半透明にすると、Form上のLabelなどの文字やButtonまで半透明になってしまいます。


140:デフォルトの名無しさん
08/01/14 21:25:58
>>139
TransparencyKey

141:デフォルトの名無しさん
08/01/14 21:27:47
>>139
TransparencyKeyでは完全に透明になってしまうのですが…

142:デフォルトの名無しさん
08/01/14 21:31:16
背景色をマゼンタにでもしとけば?

143:デフォルトの名無しさん
08/01/14 21:38:53
zlib(RFC1950)で圧縮されたファイルを解凍したいんだけど、C#だけでできる?
DeflateStream はRFC1951、GZipStream はRFC1952を使ってるらしくてうまく解凍できない。
他にzlibに関わるクラスも見当たらないし、もしかしてC#じゃできない?

144:デフォルトの名無しさん
08/01/14 21:40:27
正式な方法が用意されてるかどうかは知らないけど
CでできるんだったらC#でもDllImport使えばできる

145:デフォルトの名無しさん
08/01/14 22:21:36
C#でも自分でプログラム書けばできる

146:デフォルトの名無しさん
08/01/14 22:51:16
携帯からなんでURLは書けないが、Sourceforgeにzlib.netとかいうプロジェクトがある

147:109
08/01/14 23:18:31
良かったらどなたか>>109もお願いします(´・ω・)

148:デフォルトの名無しさん
08/01/14 23:26:39
受信待機状態を中断…もう少し具体的に

149:109
08/01/15 00:09:52
>>148
ありがとうございます。
具体的には、ボタンが押された時にポートを解放(?)してudpを破棄したいということです。

実装としては
udp=new UdpClient(port);としているんですが、ユーザの入力でポートを変更することも出来るようにしたいんです。

とりあえず今日いろいろ考えた末、
ポートを変更するときに呼ばれるメソッドを

public void ChangePort () {
   udp.Close();
   udp = new UdpClient(port);
   myReceive;
}

として、無理矢理破棄して、ReceiveCallback内をtry〜catchで起こった例外を全て無視するようにして一応動いたんですが、あまりにも邪道すぎる気がします。。。

150:デフォルトの名無しさん
08/01/15 00:14:11
>>149
いやもそれでほぼオケじゃね?
例外を全て無視じゃなくて外からClose()された時の例外だけ無視するようにすれば。

151:109
08/01/15 00:36:04
>>109
あ゛・・・
これでよかったんですね。例外は基本的に全て処理するべきなのかなぁって思い込みがありました(´・ω・)
とりあえずArgumentExceptionと、タイミングによってはObjectDisposedExceptionがスローされるみたいなんで、これらを無視するようにしておきました。

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

152:デフォルトの名無しさん
08/01/15 00:53:30
C#のことでなく.NET Frameworkのことですれ違いなんだけど、

C#で文法のことはいいとしてライブラリのことが知りたいんだけど
いい情報源教えてください。

URLリンク(dobon.net)
は読みました。
とりあえず
プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書) (単行本)
は買ってみようと思います、

よろしくお願いします。


153:デフォルトの名無しさん
08/01/15 01:15:19
>>152
MSDN

154:デフォルトの名無しさん
08/01/15 02:33:43
アンマネージドなリソースについてなんですが、やり直し等の機能でいつ解放
したらいいかわからないものが出てきた(ファイルとか)ので、ゴミ箱クラス作って
そこで一括管理しようと思ったのですが、対象となる変数の参照カウンタって
取得できないのでしょうか?
やっぱり自分で皮をかぶせるしかないですかね?

155:デフォルトの名無しさん
08/01/15 02:40:28
何が言いたいのかよく分からんが、
LRのガーベジコレクタは参照カウント方式じゃないぞ

156:デフォルトの名無しさん
08/01/15 02:40:59
s/LR/CLR/;

157:デフォルトの名無しさん
08/01/15 02:48:42
>>155
ありゃ、そうなんですか… orz
今ざっと調べたところ、Finalize()を積んでおけばGCが勝手に実行
してくれるみたいなんですが、どうしてもDispose出来ないときは
それでいいんですかね?

158:デフォルトの名無しさん
08/01/15 04:03:32
GC される前にランタイムが落ちるとか、結構ありそうだけどな。
ところで 「やり直し等の機能」 って何?

159:デフォルトの名無しさん
08/01/15 06:24:53
>>157
アンマネージリソースを扱うなら、必ず適切なタイミングで
Disposeを呼ぶような設計しなきゃ駄目だよ。
細かい話が多いので割愛するけど、
ファイナライザに頼るスタイルは色々問題があるのヨ。

ぶっちゃけマネージドな世界では、例えばC++において参照カウンタ式スマートポインタで
自動化できてたリソース管理の一部は使えなくなると思っていた方が良いかと。

160:デフォルトの名無しさん
08/01/15 06:30:02
VBの参考書で勉強しているのですが
Label1.Text = DirectCast(Me.PreviousPage.FindControl( _
"TextBox1"), TextBox).Text

をC#で書くにはどうしたらいいですか?

161:デフォルトの名無しさん
08/01/15 07:42:54
自己解決しましたm(_ _)m

162:デフォルトの名無しさん
08/01/15 08:30:22
>>158
ペイントなどに良くあるやり直し・元に戻す操作です。

>>159
やっぱり自前でDisposeしなきゃだめなんですね…
ちょっと基本設計見直してきます orz

163:デフォルトの名無しさん
08/01/15 14:07:03
Form1とForm2を定義して
Form1内で
Form2 f2 = new Form2();
f2.ShowDialog();
でForm2を呼び出した後にf2内のbutton_Clickイベント処理内でf2の中のテキストボックスや、コンボボックスの値をForm1で取得したいのですが
どうしたらよいでしょうか?

164:デフォルトの名無しさん
08/01/15 15:56:14
Form2がイベント公開してf2内のbutton_Clickイベントハンドラ内でfire
イベントデリゲート自分で定義してテキストやコンボボックスの値をEventArgsにつっこむか
またはプロパティで公開しとく

165:デフォルトの名無しさん
08/01/15 16:31:40
fireってなんでしょうか?ぐぐってもよくわかんないです・・・

166:デフォルトの名無しさん
08/01/15 16:39:14
イベントを起こす、ってことじゃね?

//Form2.cs

public event EventHandler HogeEvent;

private void button_Click( object sender, EventArgs e )
{
 if( this.HogeEvent != nul )
  this.HogeEvent( this, EventArgs.Empty ); // ← ココ
}

-------------------------------------------
//Form1.cs
...
Form2 f2 = new Form2();
f2.HogeEvent += new EventHandler( f2_HogeEvent );
...

private void f2_HogeEvent( object sender, EventArgs e )
{
 //ココが呼ばれる
}

167:デフォルトの名無しさん
08/01/15 18:47:13
>>f2.HogeEvent += new EventHandler( f2_HogeEvent );
これは何をしているのでしょうか?
form1では
private void button_add_Click(object sender, EventArgs e)
{
Addition add = new Addition();
add.ShowDialog();
}
でform2(Addition)を呼び出し、手動で、form2内のテキストエリアやコンボボックスに入力してOKボタンを押す
そのとき、したのイベントに遷移して、このメソッド内で、form1内のデータグリッドを更新できないか?ということなんですが。
private void button_OK_Click(object sender, EventArgs e)
{


}



168:デフォルトの名無しさん
08/01/15 18:52:38
(´・ω・`)しらんがな

169:デフォルトの名無しさん
08/01/15 19:03:28
恥をしのんで質問いたします。
初めてコンソールアプリを作ろうとしているのですが、
エクスプローラーからコマンドプロンプトにディレクトリパスをD&Dで使わせようと思っています。
そのとき、長いフォルダ名を含む場合、絶対パスを表す文字列がダブルクォーテーションで囲まれてしまいます。
そのため、"入力文字列補正処理"を入れるようにしましたが、なんだかスッキリしません。
皆様どうやってやってますか?
以下にソースを書きます。宜しくお願いいたします。



170:169
08/01/15 19:04:04
static void Main(string[] args)
{
  string[] str; //検証用変数
  string Input, Output; //フォルダパス

  Console.WriteLine("入力フォルダパスを入力して下さい");

  //入力文字列補正
  str = Console.ReadLine().Split(new char[] {'\"'});
  if (str.Length == 3) { Input = str[1]; }
  else { Input = str[0]; }

  Console.WriteLine("出力フォルダパスを入力して下さい");

  //入力文字列補正
  str = Console.ReadLine().Split(new char[] { '\"' });
  if (str.Length == 3) { Output = str[1]; }
  else { Output = str[0]; }

  if (Directory.Exists(Input) & Directory.Exists(Output))
  {
   Console.WriteLine("valid");
   Console.ReadLine();
 }
  else
  {
   Console.WriteLine("invalid");
   Console.ReadLine();
  }
}

171:デフォルトの名無しさん
08/01/15 19:07:37
>>167
form2でセットするんじゃなくて、form2はセットさせたい項目をpublicなプロパティで返すようにする
form1でDialogResultをチェックしてform2のプロパティからセットするのが正解

172:デフォルトの名無しさん
08/01/15 19:07:40
Trim(char[])

173:デフォルトの名無しさん
08/01/15 19:18:45
>>167
個人で作ってるだけでプロパティ作るのが面倒くさかったら、
form2の該当の入力フィールド(textBoxとか)のModifiersをPublicにするのも手だけど

174:デフォルトの名無しさん
08/01/15 19:22:07
>>171
丁寧にありがとうございます。
>>セットさせたい項目をpublicなプロパティで返すようにする
というのがいまいちわかりません。
ソース載せます。
//form1(Main)
public partial class Main : Form
{
public Main(){
InitializeComponent();
}

private void button_add_Click(object sender, EventArgs e) {
Addition add = new Addition();
add.ShowDialog();
}
}

//form2(Additon)
public partial class Addition : Form
{
public Addition() {
InitializeComponent();
}

private void button_OK_Click(object sender, EventArgs e) {
//MessageBox.Show(textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text);
}
}

175:デフォルトの名無しさん
08/01/15 19:24:50
public partial class Addition : Form
{
 public string 結果 { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; }
}

176:デフォルトの名無しさん
08/01/15 19:24:57
>>173
publicにしたら、Form1.csの補完機能からform2のコントロールが見えました!
ありがとうございます!

177:175
08/01/15 19:25:16
ミス
 public string 結果 { get { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; } }

178:デフォルトの名無しさん
08/01/15 19:37:02
はじめまして。

まことに簡単な質問で恐縮なのですが、DataGridViewのculomnsのプロパティで
オートインクリメントをしたい列があるのですが、どうすればよいでしょうか?

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

179:デフォルトの名無しさん
08/01/15 20:33:34
>>169
な、何を言ってるのかね?

180:デフォルトの名無しさん
08/01/15 20:53:51
>>169
ただファイルを開くとかくらいなら、
ダブルクォーテーションがあっても問題なかった気がするけど。

181:デフォルトの名無しさん
08/01/16 10:43:24
>>169
dos窓でドロップやったことないのか?
スペース含むパス取り込むためにデフォルトで""囲みになるのが普通だよー

182:デフォルトの名無しさん
08/01/16 11:16:56
問題あるならTrimでもすりゃいいんでは?


183:デフォルトの名無しさん
08/01/16 11:40:31
C#でExcelを操作しようと調べているんですが、断片的な
情報しか見つける事ができませんでした。

何か参考になる本やサイトなど知っていたら紹介して貰えませんか?

184:デフォルトの名無しさん
08/01/16 12:33:03
COM Excel C# でググるとか

185:169
08/01/16 13:21:32
>>180

そうだと思ったんですが、パスを変数に格納した後にフォルダの存在確認を>>170の下の方で
行っているんですが、""つきのパスだと存在しないよって言われちゃうんですよ。

>>182
調べてみます

186:デフォルトの名無しさん
08/01/16 13:51:48
つか、D&Dできるの始めて知ったぜ。いつもいちいちコピペしてた。

187:デフォルトの名無しさん
08/01/16 14:00:08
Vistaでできないな、、、XPをリモートデスクトップで出してみたらこっちではD&Dできるが・・・

188:デフォルトの名無しさん
08/01/16 14:38:39
VS2005でC#の勉強をしています。
質問なのですが、テキストファイルに
1 200
2 356
3 1250
4 870
5 692
といったような行列があり、それをC#のプログラムで読み込み
1000以上の値を持つものだけピックアップすることはできるでしょうか。
ピックアップした後に計算もしたいので、変数にその値を代入したいのです。
よろしくお願いします。

189:デフォルトの名無しさん
08/01/16 15:00:03
StreamReaderとかで開いて
ReadLineして
パースすればいい

190:デフォルトの名無しさん
08/01/16 15:01:21
var hoge =
 from line in File.ReadAllLines(@"...")
 from str in line.Split(' ')
 let value = Int32.Parse(str)
 where value >= 1000
 select value;



191:デフォルトの名無しさん
08/01/16 15:05:51
VS2005や言うてるやろスカタン

192:169
08/01/16 15:46:16
>>188

StreamReader sr = new StreamReader(filepath);
List<int[]> list = new List<int[]>();
do
{
  string str = sr.ReadLine();
  if (str != "")
  {
   string[] ary = str.Split(new char[] { ' ' });
   int n1 = int.Parse(ary[0]);
   int n2 = int.Parse(ary[1]);
   if (n2 > 999)
   {
    list.Add(new int[] { n1, n2 });
    }
  }
}
while (sr.Peek() != -1);

193:169
08/01/16 15:51:20
どうやら手動で削除するほかなさそうですね。
splitを使って面倒なことをしてましたが、
Trim(もしくはReplaceでも可)を使って少しコードがすっきりしました。
ありがとうございました。



Console.WriteLine("入力フォルダパスを入力して下さい");

Input = Console.ReadLine().Trim(new char[] { '\"' });

Console.WriteLine("出力フォルダパスを入力して下さい");

Output = Console.ReadLine().Trim(new char[] { '\"' });

if (Directory.Exists(Input) & Directory.Exists(Output))
{
  Console.WriteLine("valid");
  Console.ReadLine();
}
else
{
  Console.WriteLine("入力したフォルダパスが不正です");
  Console.ReadLine();
}



194:デフォルトの名無しさん
08/01/16 21:00:02
オマイラそれ絶対なんか間違ってるだろwww

195:デフォルトの名無しさん
08/01/16 21:20:34
すみません、教えてください。

VS2005 .netでプログラムしていますが、HOMEPATHの取得法はあるのでしょうか?

もしあるならば方法をご教授ください。

よろしくお願いします

196:デフォルトの名無しさん
08/01/16 21:23:02
994 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/11(金) 12:14:20
Environment.GetEnvironmentVariable( "HOMEPATH" );

197:デフォルトの名無しさん
08/01/16 21:27:22
\r\n と \n の差がわからないんだが
どっちも改行するわけだが動違うの?

198:デフォルトの名無しさん
08/01/16 21:31:50
>>197
サイズが違う。

199:デフォルトの名無しさん
08/01/16 21:38:14
おおまかにはOSによって改行コードが違う。
Unix:\n
Windows:\r\n
Mac:\r

ってか基本だと思うけど。

200:デフォルトの名無しさん
08/01/16 21:40:24
>>199
トンクス
Cとかだと\nが改行だから\r\nって何かと思ってたんだが
Windowsなら\r\nでいいってことでつね

201:デフォルトの名無しさん
08/01/16 21:46:35
>>200
Cは、テキストモードだと、\nは\r\nに変換される。(winでは)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4945日前に更新/230 KB
担当:undef