1 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:41:19 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part26 pc11.2ch.net/test/read.cgi/tech/1206238049/
75 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:21:23 ] >>68 bytes 型 : System.Byte[] ファイルに書き込むバイト。
76 名前:68 mailto:sage [2008/04/22(火) 23:43:11 ] >>74 実際には、こんな定義になってます。 (とあるサンプルなので、中身は置いておいてもいいとは思いますが) [StructLayout(LayoutKind.Explicit)] public class hoge { [FieldOffset(0)] public short type_a; [FieldOffset(2)] public short type_d; [FieldOffset(4)] public short datano_s; [FieldOffset(6)] public short datano_e; [FieldOffset(8), MarshalAs(UnmanagedType.ByValArray, SizeConst = 10000)] public byte[] cdata; } これを、そのままのイメージでバイナリ出力したかったのですが・・・。 で、Vhogeのアドレスを渡したら、出力できるかと思ったのですが、 型の変換ができなかったので、いい方法はないかと思案中です。
77 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:32:19 ] Marshal
78 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 06:47:30 ] >>76 なんでそこまできっちり定義してるのに、>>68 に略したのかわからん。 68の書き方じゃ求めていた答えが返ってくるわけがない。 P/Invokeで出来るんだから、何か方法があると思うのが普通。 初めて調べたけど正解は、Marshal.StructureToPtrかな?
79 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 07:13:49 ] ってbyte[]にする必要があるんだった。コンパイルもしてないけど、こんな感じ? 2回コピーするのが気に入らん。 int size = Marshal.SizeOf(Vhoge); byte[] data = new byte[size]; IntPtr pnt = Marshal.AllocHGlobal(size); try{ Marshal.StructureToPtr(Vhoge, pnt, false); Marshal.Copy(pnt, data, 0, size); } finally { Marshal.FreeHGlobal(pnt); }
80 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 07:19:26 ] AllocHGlobalなんて怖いことしなくてもfixedやGCHandle.Allocで十分ですよ
81 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:53:15 ] マネージメモリに unsafe でアクセス != marshal レイアウト
82 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:17:47 ] >>81 お前は何を言っているな
83 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:55:01 ] あ一回はコピー生成してるのかごめん
84 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:01:28 ] コンテキストメニューの項目数を設定で自由に変更できるプログラムを作成したいです。 とりあえず下記の様に通常コードを作成しましたが headlineの項目をこの様に決め打ちするのでなくforループなどで動的に追加したいと思っています どのようなに書けばいいでしょうか。ご助言願いたいです。 // コンテキストメニューの動的作成 public void ContextMenuCreate(int number) { // イベントハンドルを宣言 EventHandler eh = new EventHandler(MenuFactorOnClick); MenuItem[] ItemMenu = { new MenuItem("headline_" + 1, eh), new MenuItem("headline_" + 2, eh), new MenuItem("headline_" + 3, eh), }; ContextMenu = new ContextMenu(ami); }
85 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:04:08 ] 二つほど記述ミスがありました、申し訳ありません。 引数のintはforループに用いようと思っていたのを消し忘れました。 ContextMenuの宣言で[ami]となっていますが[ItemMenu]の間違いです。
86 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:19:44 ] ContextMenu.MenuItems.Add()又は MenuItem.MenuItems.Add()
87 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:09:37 ] 迅速なお返事ありがとうございます。 下記の用に書くことで目的の動作を果たせました。 // コンテキストメニューの動的作成 public void ContextMenuCreate(int number) { // イベントハンドルを宣言 EventHandler eh = new EventHandler(MenuFactorOnClick); // コンテキストメニューを作成 ContextMenu = new ContextMenu(); // メニュー数を設定 ItemMenu = new MenuItem[number]; // メニューの追加 for (int i = 0; i < number; i++) { ItemMenu[i] = new MenuItem("headline_" + i, eh); ContextMenu.MenuItems.Add(ItemMenu[i]); } }
88 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:15:33 ] サーバー側で接続待ちをしていない状態で、 クライアント側からTcpClient.Connect();で接続しようとすると 「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。 または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」 ってエラーが発生します。 エラーになるまで20秒くらいかかってしまうのですが、 もっと早く接続できないと判断することはできないのでしょうか?
89 名前:62 [2008/04/23(水) 16:22:39 ] ifを入れ子してやってみたのですが、できません。 どうすればいいですか?
90 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:25:03 ] コードも出さずにどうすべきか聞くとはどういう事だ? 何故それで駄目かくらい書け。
91 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:32:33 ] >>88 とりあえずMSDNみてみ
92 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:37:41 ] >>90 いや、62はコード出す・出さない以前の問題じゃね? if 文を break で抜けれるとか思ってる時点で何かおかしい。
93 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:55:00 ] >>91 レスありがとう。 だがMSDNのどこを調べればいいのかわからない。 できたら場所を、教えてください。
94 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:56:16 ] breakは括弧閉じまでジャンプするもんだと誤解してるのかも
95 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:57:46 ] そこで括弧閉じればいいのにね
96 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:01:31 ] 目的: Control.ModifierKeysを使ってモディファイアキーを判定したい。 詰まっている箇所: 複数のモディファイアを判定する方法がわからない(Shift + Alt + Vなど) どなたかアドバイスいただけないでしょうか
97 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:06:01 ] >>96 Keys構造体はただのビット値。 (Control.ModifierKeys & Keys.Shift) != Keys.None) & ((Control.ModifierKeys & Keys.Control) != Keys.None) こんな感じでいけるはず
98 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:11:12 ] (Control.ModifierKeys & (Keys.Shift | Keys.Control) != 0)
99 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:13:16 ] Delphiの列挙値は比較が楽だったんだけどなあ。 なんでC#は似たような比較方式を採用しなかったんだろう
100 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:10:06 ] ヘジたん的になにか気に入らないところがあったのでは
101 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:10:31 ] TcpListener で質問なんですが 0.0.0.0 とやれば全指定なんですが 範囲指定したい場合、例えば 192.168.1.0とかやると 192.168.1.0〜192.168.1.255 とかできるんでしょうか?
102 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:24:02 ] >>97 >>98 ありがとうございました。 うまく動作させることができました
103 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:25:10 ] >>101 192.168.1.0であれば192.168.1.0のみになる。 0.0.0.0は特例でそういう使い方は普通ワイルドカードを利用する。
104 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:51:06 ] >>103 ありがとうございました。
105 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:15:26 ] >>95 do { } while(false) とか? >>99 ((enumValue & flag) == flag) を返す演算子があってもよさそうだよな
106 名前:68 mailto:sage [2008/04/23(水) 22:17:31 ] いろいろヒントありがとうございました。C# Marshalでぐぐって、 MyStruct o = new MyStruct(); ... IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(o)); try { Marshal.StructureToPtr(o, ptr, false); byte[] bytes = new byte[Marshal.SizeOf(o)]; Marshal.Copy(ptr, bytes, 0, Marshal.SizeOf(o)); ... } finally { Marshal.FreeHGlobal(ptr); } に当たったので、>>79 さんのサンプルでいいみたいです。 助かりました。
107 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:38:29 ] >>105 フラグはわざと便利にしてない感じがするなあ 分からないなら使わなくていい,使うにしても控えめに,っていうような意図を感じる
108 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:51:00 ] >>107 間違いなくその通りだろうな、Win32APIのラッパーが避けられない以上、やむなく残した としか思えないところがあるな。
109 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:53:43 ] javaからc#に転向することになって本読んでます。 パッと見javaと似てるけど、なんじゃこれは? というのもあります。 public xclass() : base(xclass.MethodA()) { Console.WriterLine("XClass constructor"); } xclass()メソッドの後ろにある、コロンとメソッド、 これは一体なんですか。 メソッドの直後にメソッドて・・・・??。 想像もつかんです。 しかもこの本には意味が書いてない。。 どういう動作になるんでしょう?
110 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:55:42 ] なんとなく理由が分かった、ビットフィードが無くなったのもこれが理由だな マルチスレッドだね、使用しないビットに対してもリードもライトもロックが必要になるが、どこまでロックが必要か訳わからんようになる。
111 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:56:14 ] 基底クラスのコンストラクタに引数を与える構文。
112 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:02:39 ] >111 ありがとうございます。 他の本で読んだ記憶がうっすらよみがえってきました。。
113 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:06:04 ] 少し不思議なことがあるのですが・・・xclass.MethodA() って何、コンパイルできないような気がしたので、自分の知識が不足しているのか、間違っているのか気になる。
114 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:12:42 ] >>113 デリゲートが引数になっているメソッドには、そのデリゲートに合うメソッドを引数として渡せる。 実際には、デリゲートのインスタンスが生成されているんだけど。
115 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:18:03 ] MethodA の後ろの () が、タイプミス? MethodA の正体は static 関数? ちょっと原文みてみたいですね、'WriterLine' だしw
116 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 07:02:10 ] kakenai
117 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 07:05:22 ] C#で sakuratan.ddo.jp/uploader/source/date79504.png 上の画像のようなGUIを扱いたいのですがどうすればよいのでしょうか?
118 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 07:50:04 ] そのPNG画像を読み込んで貼り付ければいんじゃね?
119 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 08:22:53 ] >>117 ユーザコントロールを作る OnPaintBackgroundをオーバーライドして背景を描画しないようにする OnPaintをオーバーライドして各頂点およびエッジを描画する その他にも細々と設定しないといけないプロパティとかあるかも。 パフォーマンス?さぁ…
120 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:03:00 ] enum.first.tostring()で"first"は得られるのですが enumに同期させてenum.firstならば"最初" enum.secondならば"二回目"とか任意の文字列を得るのに スマートな実装方法を教えて下さい
121 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:09:42 ] enum使わないでstructにする
122 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:16:13 ] TypeConverter 実装するとか
123 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:32:34 ] (int)enum.first 明示的にバラバラしてるんならできないけど
124 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:00:02 ] >>120 Dictionaryじゃダメな理由を聞こうか
125 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:27:06 ] >>88 だけど どなたか知ってたらヒントください。
126 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:57:38 ] >>125 ttp://bbs.wankuma.com/search.cgi?no=0&word=%94%F1%93%AF%8A%FATCP&andor=and&logs=17.txt&PAGE=50
127 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:57:58 ] >>125 Recieveにはタイムアウト設定できたと思うが、Connectには無理だったと思う
128 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:46:50 ] >>127 はい、できません。 最近のWindowsなら、レジストリいじればシステムグローバルな 値は変更できると思うけど。 TCP周りのいろんな設定値はユーザーランドではいじれない実装の OSがほとんどです。
129 名前:88 mailto:sage [2008/04/24(木) 18:30:05 ] >>126-128 ありがとうございます。
130 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:58:22 ] Equalsって何と発音するのでしょうか・・?
131 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:01:02 ] 辞書引けよ
132 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:16:01 ] コンテキストメニューにショートカットを設定したいです。 メニューの数が可変であるためにVSに頼らず動的に作成しているのですが 生成番号に対応したショートカットを動的に与えるにはどのようにすればいいでしょうか 下記の様なイメージです。 Item1(&Alt + 1) Item2(&Alt + 2) Item3(&Alt + 3)
133 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:17:18 ] >>130 無理矢理日本語で言うなら「いーくぉーる」かな。 ちなみに日本語で言う「イコール」のことな
134 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:42:20 ] C#でWindowsUI付きのFTPクライアントを作っているのですが、 UI(WinForm)をロックさせないためにBackgroundWorkerを使用しています。 BackgroundWorkerからはFTPコマンドを扱うクラス(FTPClass)のメソッド(UploadMethod)を呼び出しています。 この時、UploadMethodの進捗をUI(WinForm)に表示させたいのですが、 この場合UploadMethodの中でWinFormのコントロールを操作する処理をさせるしか ないのでしょうか? (実際にはWinFormはSTAなのでBackgroundWorkerのメソッドを介してUI変更を行います) というのも、その場合UploadMethod内のUI変更の処理は上位クラス(WinForm)の 実装を意識しないといけなくなるわけで、クラス間の結合が密になってしまうのは 好ましくないかなと感じまして。
135 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:43:02 ] >>130 いーくぁるず >>132 ちょっと↑の方のレス見ろ
136 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:48:12 ] >>132 ショートカットを設定することは出来るが、Altは使えないんじゃないかな。 Altを押した時点でコンテキストメニューは消えると思う。 ショートカットの設定は、ToolStripMenuItemなら .ShortcutKeys = (Keys)(Keys.D0 + i); でできる。
137 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:49:45 ] >>135 レスありがとうございます。 >>84-87 のところでしょうか? 私が行いたいのは(&Alt + 1)の数字の部分を要素にあわせてインクリメントする(イメージ)なので コンテキストメニュー自体を動的生成している>>84-87 とは問題が違ってしまいます。 説明不足申し訳ありません。
138 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:50:39 ] >>134 UploadMethodが進捗を返すのなら(返すか知らんけど)BackgroundWorker内で PeportProcessイベントを発生させればフォームに進捗を伝えられる
139 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:55:59 ] >>132 なんか発想が変な気がするよw 別にコンテキストメニューである必要もないし、メニュの数を動的に変える 必要も必ずしもないんじゃないの? ディセーブルにすれば十分に思うし、その方がユーザーにとっても明示的で わかりやすいよ。 もしコンテキストメニュー「も」必要なら、ポップアップするタイミングで メインメニューのメニューを丸ごと奪い取ればいいんだし。
140 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:00:15 ] >>137 括弧でアンダーラインが入ってるパターンのなら ToolStripMenuItem.Text = "背景色に設定(&1)"; みたいに前に&つけるだけだよ
141 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:02:55 ] ショートカットキーのこと言ってるのかただのアクセレーターキーのこと言ってるのか 判然としないねw いずれにせよちょっとピンボケした発想だと思う
142 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:08:29 ] >>136 レスありがとうございます。 ToolStripMenuItemでなくMenuItemで行ったのですが .ShortcutKeys = (Keys)(Keys.D0 + i);でキャストエラー .ShortcutKeys = (Shortcut)(Keys.D0 + i);でコンパイルは通りますが 実行時に「引数値'value'(50)は列挙型'Shortcut'に大して無効です。」とエラーになります。 >>139 ホットキーでコンテキストメニューを呼び出し全ての操作をメニュー上で行うという かなり変則的なプログラムを作っております。 通常の操作であればディセーブルで十分なのはご指摘の通りだと思います。 レスありがとうございます。 >>140 レスありがとうございます。 えと、それはItem1(1)の1の下にアンダーバーが表示されるだけで それだけでショートカットとして認識される訳ではありませんよね? >>141 申し訳ありません。 ショートカットキーとアクセレーターキーの違いを知りませんでした。 アクセレーターキーを実装したいと考えています。
143 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:11:09 ] >>142 ねえ、だからそれメインメニューじゃいかんの? なんでそんなウィンドウズの標準のお作法から外れたことをしたがるのか理解できんよ。
144 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:31:03 ] >>138 UploadMethod内では 1.アップロードファイルの確認 2.アップロードコマンドの発行 3.アップロードコマンドの終了 と3つのプロセスに分かれているのですが、それぞれのプロセスが終了するごとに UIに通知したいと考えています。各プロセスをさらにメソッド単位に分解し、 それぞれの完了ごとにReportProgressを呼ぶことも考えましたが、何かスマートな方法 は無いかものかと。 例えばWinForm側にリスナのようなものを追加し、それぞれのプロセスが終了するごとに イベントを発生させ、リスナからReportProgressを呼び出す。と言ったような事は 可能なものでしょうか?
145 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:34:26 ] >>142 デザイナで実際に設定してみればわかると思うけど、ショートカットにはCtrlかAltが必ず必要だったと思う。 それにデザイナで設定できることは、実際に設定してみてDesignet.csがどう生成されたか見るのが早い。 ToolStripMenuItem.ShortcutKeys = (Keys)(Keys.Alt | (Keys.D0+i)); 試してないけどみたいな感じで出来るんじゃないかな。
146 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:48:07 ] >>143 必ずそういうこと言う人がいるけど質問者の条件を変えようとするレスは書かなくていいです。
147 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 07:32:18 ] >>144 可能 Javaの人?
148 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 08:21:57 ] >>146 君のような思考を「フェティシズム」って言うんだよ
149 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:45:18 ] フェチのこと? なんで?
150 名前:845 mailto:sage [2008/04/25(金) 09:46:50 ] 変な仕様を指摘すると「お前は言われたとおりに組んでればいいんだよ!」とかいう奴はいるなぁ たいては後で直さなきゃいけなくなるんだけど
151 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:18:54 ] お前誰だよ↑ 仕様にケチつけると話題がそっちに流れるだろ。 もうちょっと考えような。
152 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:38:38 ] 奇妙な仕様を指摘して何が悪いんだか。
153 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:00:52 ] ファシズムって言いたかったとエスパーw
154 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:17:48 ] むしろ悩んでる原因は変な仕様だってことが多いからな
155 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:20:40 ] 別にケチつけるわけじゃなく、スタンダードな方法を提示したレスをするならいいと思うけどね
156 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:21:45 ] まあ大体の初心者は変な思いつきと思い込みで阿呆な仕様にしてるよねw
157 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:11:42 ] >>155 それならいいよね。建設的だし。 でも批判するだけなら分かってない人でも出来ちゃうから厄介。
158 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:20:54 ] >>147 JavaとC#の二束の草鞋です。 C#の場合はリスナそのものに該当する仕組みは無く、 delegateを使用してリスナ相当を実装する必要があるのかなと考えているのですが
159 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:10:50 ] フォーム操作可能にしたいマルチスレッドならdelegate()が一番簡単と思うけど
160 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:21:20 ] >>158 @FtpClassにOwnerプロパティを実装 public Form Owner{ get; set;} AUploadMethodを呼ぶ前にOwnerにthis(つまりWinForm)をセット ftpClass.Owner = this; BUploadMethod内のイベントを通知したいタイミングでOwner.Invoke()を呼ぶ if(Owner!=null && UploadFileCheckEventHandler != null) Owner.Invoke(UploadFileCheckEventHandler(FtpEventArgs)) これでどうだろうか
161 名前:158 mailto:sage [2008/04/25(金) 13:28:19 ] ちと変だな 訂正 public event FtpUpLoadEventHandler UpFileChecked; public event FtpUpLoadEventHandler UpLoadStarted; public event FtpUpLoadEventHandler UpLoadFinished; こんなようなイベントを実装して、 if(Owner!=null && UpFileChecked != null) Owner.Invoke(UpFileChecked(FtpEventArgs)) とかで呼び出す
162 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:37:12 ] >>160 C#のイベント処理に疎いので、少し教えていただきたいのですが、 この場合Ownerで示されるFormクラスのインスタンスに、UpFileCheckedイベントが通達 されるという認識でよろしいでしょうか? その場合、Owner.Invokeでイベントを発行している形なので、FTPClassがイベントを 通達できるのはFormクラスのインスタンスに限られてしまい、FTPClassはFormクラスと 依存関係になってしまうのではと考えているのですが。
163 名前:デフォルトの名無しさん [2008/04/25(金) 14:49:02 ] C# (.NET) でコントロールを透明化したいんですけど、 obj.Parent 以外に対しても透明化というのは、無理なんでしょうか? もしくはレイヤードパネルみたいなものはないですか? やりたいのは // A,B 両方表示(A,B は完全に重なっているコントロール) A.Parent = parent; B.Parent = parent; // A だけ表示 A.Visible = true; B.Visible = false; // B だけ表示 A.Visible = false; B.Visible = true; みたいなことなんですが・・・
164 名前:134 mailto:sage [2008/04/25(金) 14:58:41 ] すいません今更ですが >>134 ×(実際にはWinFormはSTAなのでBackgroundWorkerのメソッドを介してUI変更を行います) ○(実際にはWinFormはSTAなのでWinFormのInvokeメソッドを介してUI変更を行います)
165 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 15:12:27 ] >>164 FTP クラスが ProgressChanged みたいなイベント公開すればいい。 アップロード中に適当に状況が変わるなりすればイベントを起動する。 Form は その ProgressChanged イベントのイベントハンドラで Invoke して GUI に反映させる。 Owner はいらんな。SynchronzingObject ならあってもいいけど。
166 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:45:27 ] >>163 見た目を気にするなら諦めてWPFに乗り換えましょう
167 名前:デフォルトの名無しさん [2008/04/25(金) 22:03:36 ] proxy.f3.ymdb.yahoofs.jp/bc/4811d5fe_a9ed/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/slot.txt?bcIzdEIBwa.jLV2N これを見た感想おしてください(しょぼすぎますがその辺はご了承ください)
168 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:06:55 ] >>158 二足のわらじって、君思いっきりJava脳じゃん? まぁ>>161 でもちらっと出てるけどeventを作ればいいよ dobon.net/vb/dotnet/vb2cs/event.html
169 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:10:55 ] >>167 たいへんよくできませんでした
170 名前:167 [2008/04/25(金) 22:12:08 ] それは自分でも自覚してる。 あとどんなものつけたら面白くなりますか?
171 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:28:51 ] はじめはこんなもんだとは思うけどとりあえずgotoは封印しましょう 同じような処理はメソッドにまとめましょう どうでもいいけどhRandomっていう名前がキモい 参照型変数にhを付けることにしてるのか知らないけどそんなのあんまり意味無いし 付けるならslotにも付けないとおかしい
172 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:29:17 ] >>167 感想言っていいのか?本当にいいのか?
173 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:31:06 ] いいよ
174 名前:167 [2008/04/25(金) 22:36:02 ] この場合gotoつかわないとすれば何つかえばいいですか?
175 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:37:36 ] Hyoujiメソッドを呼び出せばいいんじゃないか?