1 名前:デフォルトの名無しさん [2007/04/23(月) 12:42:36 ] 前スレ VB.NET質問スレ (Part20) pc11.2ch.net/test/read.cgi/tech/1173061176/ テンプレは2〜10くらいまでの間にある予定
862 名前:デフォルトの名無しさん mailto:sage [2007/06/26(火) 21:59:18 ] それは大きなお世話だと思うぞ。
863 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 10:37:28 ] >>859-860 コマンドプロンプトでコンパイルしている人間がここにはいないんだろう。
864 名前:デフォルトの名無しさん [2007/06/27(水) 13:17:50 ] >>861 おまえ某MVP臭いぞ 仕事してたらわかるだろ? 仕方ないときもあるんだし
865 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 16:04:39 ] でも>>859 の場合は多分勉強だよ? VB.NET Expressでいいやん
866 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:17:35 ] ちょっと安めおまいら。これでも見ろ。知らない人間は えーーーーっと驚くこと請け合いだぜ。 「911」の真実とはダイジェスト版 ? 日本語と英語 ? .movフォーマット ? 31分 - 23MB www.harmonicslife.net/gallery/main.php?g2_itemId=3443 「動画をダウンロード」 をクリックすると、動画が始まるまでに20分ぐらい待つと 自動開始する。 30分ぐらい待ってもよければこっちも見る。こっちは詳細バージョンだから、上のを見て 興味もったらぜひ見てみれ。 『911の嘘をくずせ ルース・チェンジ・セカンド・エディション』 日本語版 - ウェッブ・バージョン ? .mov フォーマット ? 83分 - 83MB www.harmonicslife.net/gallery/main.php?g2_itemId=1225 要するに俺らはこういう戦争に加担しちまった。おれも当時は小泉に賛成しちまって ネットで賛成派に回っちまったよ。だが悪いことだった、北朝鮮のミサイルが来るって ことでアメリカとは同盟するしかないって信じ込んでた。しかしこれを見れば、 ちょっと待て日本はこれでええのか?と疑問になるはず。
867 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 20:26:46 ] 003はフランソワーズ まで読んだ
868 名前:859 mailto:sage [2007/06/27(水) 22:52:37 ] >>861 確かに勉強中なんですが、職場にはFramework1.1のvbc.exeしか はいってないので昼休みとかにも弄るために1.1でやってます。 基本はそんな変わらないだろうってことで。 職場はネットにも繋げないんでヘルプもクラスライブラリをHTMLで保存して CDに焼いて持ち歩いてたりします。 家にはVB2005Expressインストールしてあるんですけどね・・・ >>863 やっぱ危篤な人種なのか・・・ dllとかを毎回入力するのが億劫なんで 簡単なHTA作ってコンパイルしてます。 とか言ってたらこんなん見つけました ttp://www.sliver.com/dotnet/SnippetCompiler/ ところで、 「FileSystemWatcherで共有フォルダにあるExcelファイルが更新された場合にバルーンでその旨を表示」 というコンセプトで勉強アプリを作り始めたのですが、 Excelは「開く」「閉じる」だけで、更新日時が変更されNotifyFilters.LastWriteを設定しても 正確な情報が取れないことが分かりました・・・ 自分で考えつくのは、 変更されたらファイル名と更新日時の値を保持して次に同名ファイルが更新されたら比較する といったものなのですが、もっと良い案や確実に更新されたのを取得できる方法がありましたら アドバイスお願いします&このスレの住人さんはレベルが高そうなんで 素人はこっちいけや〜的なスレがありましたら誘導していただけると嬉しいです ここからずっと俺のターン?(´・ω・`)
869 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:44:00 ] >このスレの住人さんはレベルが高そうなんで ナニヲイッテイルンダ 定期的にファイルのハッシュ比較するとか 前回保存日時で比較するとか すりゃいいんじゃね?
870 名前:デフォルトの名無しさん [2007/06/28(木) 09:05:36 ] みなさんこんにちは。お尋ねします。 通常のLabelですと後ろに引っ込んだ3D形状はあるものの 手前に出っ張った形状は付属されていないのですが、 どこかのサイトで、手前にふくらみのあるラベルコントロールなどが あるところをご存知ないでしょうか? それともこういったものは有料のものになるのが普通でしょうか? 昔、LabViewというものを触ったことがあり、それには手前に出っ張って いるガジェットがたくさんあったのを記憶しています。あれと同じような 感じに見えるものがほしいのですが、 もしご存知の方がおられましたら教えて戴きたく、 なにとぞよろしくお願いします。
871 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:00:47 ] >>870 LabelのPaintイベントで自分で描画する。 例えば Label1のPaintイベントに e.Graphics.DrawRectangle(New Pen(SystemColors.ControlDarkDark), New Rectangle(0, 0, Label1.Width - 1, Label1.Height - 1)) e.Graphics.DrawLine(New Pen(SystemColors.ControlLightLight), 0, 0, Label1.Width - 2, 0) e.Graphics.DrawLine(New Pen(SystemColors.ControlLightLight), 0, 0, 0, Label1.Height - 2) 微調整はお好みで。
872 名前:デフォルトの名無しさん [2007/06/28(木) 10:08:31 ] >>871 これって、自分で描画できるものなのですか!凄い。 ありがとうございます、やってみます。助かります。
873 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:51:21 ] >>871 直接描画するんじゃなくてControlPaint.DrawBorder3Dを使うべき
874 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:18:24 ] 数字をアルファベットに変換する場合、みんなはどうしてる? たとえば、99ならninety nineとか、11ならelevenとかに変換したいんだけど(´Д⊂グスン
875 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:28:51 ] 自前で実装
876 名前:871 mailto:sage [2007/06/28(木) 16:30:14 ] >>873 Private Sub Label1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint ControlPaint.DrawBorder3D(e.Graphics, Label1.ClientRectangle, Border3DStyle.Raised, Border3DSide.All - Border3DSide.Middle) End Sub こんな感じでいいかな?
877 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:52:48 ] >>875 めんどくさい(´Д⊂グスン
878 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 16:55:33 ] >>877 このスレで一番言ってはならないことを言ったなw もう誰も答えてくれんよw
879 名前:874 mailto:sage [2007/06/28(木) 17:07:53 ] >>878 んだねw ↓探したらいろいろあった www.google.co.jp/search?hl=ja&q=NumberToWord%E3%80%80C%23&btnG=%E6%A4%9C%E7%B4%A2&lr=
880 名前:デフォルトの名無しさん [2007/06/28(木) 17:26:07 ] >>873 >>876 こちらもやってみました。 実は、ユーザーコントロールで複合したものでやってみてるのですが、 Label と TextBox の組み合わせで同じ UserControl に乗っけてまして、 その際、ClientRectangle の Inflate とかが必要のようですね。+2ぐらいしないと 外形が遇わないようです。 ところで、この Raised を使った場合、それを通常の BorderStyle プロパティに 追加して選択できるようにもしたいのですが、UserControl なのでPropertyを Overrideして追加するとしたら、どういった感じにすると出来るでしょう? ご指導戴ければありがたいです。
881 名前:デフォルトの名無しさん [2007/06/28(木) 17:28:11 ] 普通にプロパティつくってその中でいじってやればいいんじゃねぇ? やり方は好みだとおもうんだが・・・・ オーバーライドする必要がないと思うから
882 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:32:32 ] >>880 UserControlじゃなくてLabelクラスをオーバーライドするほうがスマート
883 名前:882 mailto:sage [2007/06/28(木) 17:33:38 ] すまんオーバーライドじゃなくて継承ね
884 名前:880 [2007/06/28(木) 19:31:41 ] >>881 なるほど、UserControl だと、そのものの Property になるということですね。 わかりました、助かりました。 >>882-883 そういう方法もあるということですね。今こちらのはTextBoxと他にもうひとつ Labelも使ってたので、むずかしそうだったため、UserControl にしてしまってました。 たぶんよく理解していればできるのだと思うのですが、組み合わせコントロールとしては デザインモードでの視覚的な組み合わせが楽な UserControl にしてました。 その方法での実現についてはまた勉強して考えてみます。
885 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 11:25:32 ] user.configの仕様どうにかならないかなー。 MySettingsで保存する際に、保存場所を指定できたらすごく便利なのに。。 バージョンごとに保存先が変わるとか、どうしてこんな糞仕様なのか。 せめて選べたら良いのに。
886 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 11:40:44 ] >>885 MSDNみたら user.config は System.Windows.Forms.Application.LocalUserAppDataPath プロパティで指定した場所に配置されます。 とある。 試して無いけど。
887 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 12:38:34 ] っていうか、恥ずかしいからMy爺さんの機能なんか使うなよw リソースにアクセスする用途しか使ったことないぞ俺は
888 名前:デフォルトの名無しさん [2007/06/29(金) 12:39:42 ] 質問です VB(どういうかVSのマクロ)で、ドキュメントウィンドウに文字を出力する際に 入力する文字列に,(カンマ)が含まれるとE_FAILが帰ってくるんですが これをどうにかして,,,,見たいなのも出力できるように出来ませんかね? 具体的に言うならこういうの↓ DTE.ActiveWindow.Selection.text += "nullpo,," でエラーなしにする方法、,,で打ち切られないようにする方法が知りたいのです
889 名前:デフォルトの名無しさん [2007/06/29(金) 12:43:54 ] >>887 設定保存とからくじゃないかw 俺はSettingとResource使ってるな
890 名前:885 mailto:sage [2007/06/29(金) 13:05:37 ] >>886 おお! どうもです。 ちょっと調べてみようっと。 >>887 初めちょっと嫌だなーとか思ったけど、使ったら超便利だった。 サクサク保存できる。
891 名前:885 mailto:sage [2007/06/29(金) 15:53:01 ] >>886 Read only でした。
892 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:00:10 ] 次のようなクラスを作成する場合、 aaa.bbb() aaa.ccc.xxx() aaa.ccc.yyy() aaa.ddd.zzz() Public Class aaa Public Sub bbb() 〜〜〜 End Sub 次のコードは?? End Class 教えて下さい。
893 名前:デフォルトの名無しさん [2007/06/29(金) 17:08:31 ] 適当に やり方はいろいろだと思うけれど・・・・とりあえずで public class c_ccc public sub xxx end sub public sub yyy end sub end class public class d_ddd public sub zzz end sub end class public class aaa public ccc as new c_ccc public ddd as new d_ddd public sub bbb end sub end class
894 名前:デフォルトの名無しさん [2007/06/29(金) 17:33:47 ] >>893 thx
895 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 20:45:04 ] サーバに置いたexeを動かすのにexeと同じ場所にMicrosoft.VisualBasic.Compatibility.dll が無いと動かないPCと無くても動くPCがあるのは何故なんでしょう? OSは2KだったりXPだったりだけど、どっちでもなるのならないのあるし、 もちろんみんな.netフレームワーク1.1は入ってるし (動かないPCでもそのDLL置いただけで動くようになった)
896 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 22:40:14 ] >>895 .netを再インストしてみよう com登録してなくても検索パスにdllをおいただけで動くよ
897 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 23:04:34 ] >>896 thx XPだと.netプリで入ってるけど、一度アンインストールして再インストールすればいいのかな? 一度試してみます
898 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 23:10:12 ] >>895 プログラムがバージョン違いのMicrosoft.VisualBasic.Compatibilityを参照してる ってことはない? .NET 1.1 なら ver. 7.0.3300.0 のはずだが。.NET 2.0は Ver.8.0.0.0 。 あと.NET 1.1 のSPで差が出るかどうかはわからないがその辺も調べてみて。
899 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 05:23:45 ] こんにちは、お尋ねします。 各種オブジェクトのイベントの発生順序に関する一覧表のようなものは どこかのサイトで公開されていたでしょうか? (例えば TreeViewコントロールのTreeNodeをクリックした後の各種イベント MouseClick,Click,OnBeforeSelect,OnAfterSelect などの発生順序、等です) こうしたものはすべてのイベントについて実験していくことは可能なのだとは 思いますが、できたら理論的に分っているものがあれば、そのほうが正確で早い と思いました。 もしご存知でいらっしゃいましたら教えて戴きたく。よろしくお願いします。
900 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 06:26:29 ] 強いて言うならMSDN
901 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 10:34:09 ] つか常識的にMSDN
902 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 11:44:35 ] MSDNとS・G・G・Kって何か似てるよな
903 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 12:44:35 ] たぶん OnBeforeSelect は OnAfterSelect の前
904 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 12:52:13 ] >>899 そういうこと言いたい気持ちはよく分かるんだけど、 実際自分で試すのが一番正確で速いでしょ、どう考えても。 というか、まあ一概には言えないけどコントロールのイベントの発生順序に 依存するコードというのは、ちょっと不吉な匂いがするよ。
905 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 14:43:50 ] >>904 禿同 特にツリービューは気をつけたほうがいい
906 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 15:05:28 ] >>900-905 MSDNですと、発生順序に関しては必ずしも明記されていないように思いました。 確か本にはFormのLoad時とClose時のものなどが掲載されているものがありました。 それと同様の情報がどなたか公開されているのではないかと思ったのでした。 それでは、また調べてみます。ありがとうございました。
907 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 16:34:26 ] 明記されていない場合は順番を当てにしない方がいいと思うよ
908 名前:デフォルトの名無しさん [2007/06/30(土) 22:22:46 ] 自分でConsoleWriteでもつかって調べればいいだろうに・・・・
909 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 22:36:44 ] 俺も前にトレイからの復帰時にtreeview関係のイベントが起きて困ったもんだ
910 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:29:39 ] 順番を当てにされたくないから意図的に明記してないのかもしれないし
911 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 12:40:46 ] いやそういう問題でももちろんあるんだけど、 「イベントの順序に依存したコードの不吉な兆候」というのは、 仮にそれ(イベントの順序)が確定しているとしても、それを人間が正しく 認識していないと意味を把握できないコードになりがちだから 保守性や拡張性の点で問題があるということでしょ。
912 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 15:37:39 ] GroupBoxの線の色を代えられないとか、どんな仕様にしてるんじゃ.NETは〜!! ちょぼちょぼ、痒い所に手が届かない風にコントロールなどが 作られてあって面倒くさい。 つうか、折れも画面を作る前に気が付けよ・・・。 は〜〜〜。orz
913 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 15:51:28 ] 馬鹿の要望きいてるほどMSも暇じゃないんじゃね?
914 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 16:01:51 ] 文句はチラシの裏に書け。 質問なら、素直に聞け。 思わせぶりな文章書いて、対策案を貰おうとしている様が見え見えで引く。
915 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 16:32:44 ] >>913-4 すいません。愚痴でした。 確かにチラシの裏に書いとけば良かったです。 まあ、もう、解決したんですが、その方法もチラ裏に書いときますわ。 いや、しかし.NETはほんとに、ちょっと足りないよ。 DateTimePickerは空に出来ないとか、FileDialogでフォルダとファイルの選択が〜とか。 ま、こちらも解決しているんで、今となってはどうでも良いですが。
916 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 17:56:26 ] >>915 だからチラシに書けよ。書き込むな。
917 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 17:58:22 ] 質問スレに愚痴てwwwwwどんだけwwwwwwwww
918 名前:デフォルトの名無しさん [2007/07/02(月) 18:16:42 ] >>915 >いや、しかし.NETはほんとに、ちょっと足りないよ。 いや、足りないのは君の頭と想像力と解釈力
919 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 20:05:50 ] >>915 標準コントロールの機能が十分だったらサードパーティ涙目だろが
920 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 20:16:06 ] というより、たまたま俺様が欲しいと思ってる機能がないのは何でじゃ〜(ムキー) っていうのはちょっと精神病チックだよね正直w まあ20%ぐらいは共感できる部分もあるけど、ドトネトの場合比較的簡単に コントロールの機能が拡張できるから俺はそんなに不満はないなあ。 ただ、ToolStrip関係はもう少しなんとかならなかったのか?とは思わんこともない。 クラスライブラリ的に醜すぎるし、拡張がしづらいんだよねToolStrip関係は。
921 名前:デフォルトの名無しさん [2007/07/03(火) 12:01:30 ] 業界未経験ですが、PGの面接に行ったらVB6をやってもらうと言われました。 現職場でVB.NETではアプリケーションを作ったこともあり、受注先に納品した り、社内でのデータベースを構築した経験(図書管理など)もあります。 .NET→VB6へ下がってしまうのがなんか時代に逆行するようで嫌なのですが、 .NET→VB6への移行(頭の切り替え?)はやっぱり難しいものでしょうか? 一応、エクセルのVBAはフォームまわりやファイル処理はできます。
922 名前:デフォルトの名無しさん [2007/07/03(火) 12:13:28 ] VBA+αくらいで考えとけばいいんじゃない? 意向が難しいかどうかは人それぞれだけど たぶん君なら大丈夫 ただ・・・いろいろ.netならなぁ・・ とか思うことは多いだろうな・・・・
923 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 14:02:48 ] If文とか書いたとき、自動でEnd Ifを挿入してくれなくてイラつくと予想。
924 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 14:03:27 ] VB.NETなら誰が書いたコードでもそれなりに理解できるが アホがVB6で書いたコードは何がどうなってるのか読むのが大変
925 名前:デフォルトの名無しさん [2007/07/03(火) 14:05:35 ] 2005のWindows.Formアプリで質問です。 DataGridViewのコンボボックスカラムを使用してデータを選択させています このデータはDataSourceで指定されたデータを使用しています。 問題はこの後で、データの文字がセルの幅を超える場合、ドロップダウンが表示されたときにすべて表示されない状態になっています。 オーナードローすればいいんでしょうが、幸いDropDownプロパティがあるのでこれを使いたいと思います。 このとき、普通であれば表示させるデータをなめてMeasureStringで最大幅を設定するのでしょうが データ取得に時間がかかりデータ数が多いこともあり、できるだけループで回すようなことをしたくありません。 もし何か回避する方法があるのであればお教え願えませんか? もし無いのであれば諦めてデータをなめて最大幅を設定しようと思います。
926 名前:デフォルトの名無しさん mailto:sage [2007/07/03(火) 14:24:00 ] >>925 AutoSizeMode = AllCells でいいんじゃない?
927 名前:デフォルトの名無しさん [2007/07/03(火) 14:31:51 ] >>926 あ〜そういう手がありますね 早速やってみたところドロップダウンが奇麗に表示されました。 長い文字を選択するとセルのサイズ変わっちゃうけど、まぁこれはこれで取りあえず置いておいてつづけようかと思います。 (Keyの項目なので表示しきる必要はあると考えて) 回答ありがとうございました。
928 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 05:41:03 ] ところでおまいら少し安め。 ベンジャミンフルフォード 「日本はここから侍のこころを取り戻そう!」 www.harmonicslife.net/PodCasts/2006/Yumi20061013Podcast_911Fulford.mp3
929 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:07:03 ] 文字コードの自動判別ができるのはどのバージョンのVB.NET?
930 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:20:07 ] むしろその日本語ってどんなバージョンだよw 頭おかしいんじゃねえの
931 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 20:38:56 ] 多分それができるころにはVBはなくなってると思う
932 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:10:25 ] C:\WINDOES\fontsのなかにあるEUDC.TTEをローカル(C:\copy)にコピーしたいんですが、 System.IO.File.Copyを使ってもwindowsに変な影響出たりしませんか?
933 名前:デフォルトの名無しさん [2007/07/04(水) 23:39:43 ] DatagridViewでデザイン時にカラムを追加してPropertyName設定してテーブルをバインド ↓ データソースの中身Dispose+Nothing ↓ 同じ構造の別テーブルをDataSourceにセット ↓ 最初にデザイナで追加しておいたカラムがDataGridViewのColumnsから消えてる ( ゚Д゚)ポカーン 気付くまで30分かかったw
934 名前:932 mailto:sage [2007/07/05(木) 09:36:36 ] 自己解決しました。
935 名前:932 mailto:sage [2007/07/05(木) 12:26:34 ] ↑って誰ですか? 解決してないんですけど
936 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:35:11 ] >>932 削除とかならまだしも、普通にコピーとるだけなんだろ?なにを心配してるんだ? 馬鹿らしくてみんな答えないだけだよ。 というか自分で試せることだろ? 心配なら復元ポイントでもつくってやってみろ。
937 名前:デフォルトの名無しさん [2007/07/05(木) 13:18:45 ] >>936 こういう馬鹿は試しもせずに聞いてくるからたちが悪い 失敗から学ぶことのほうが多いというのに
938 名前:デフォルトの名無しさん [2007/07/05(木) 19:27:17 ] コンポーネントってデザイナでフォームじゃなくなんか下の方に置かれるじゃないですか? カスタムコンポーネントを作ろうとした場合、どうやってフォームの情報を取得するんですかね?
939 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:29:12 ] Containerをフォームの型にキャストすればいいんだけど そうするとコンポーネントとして分離した意味がなくなるからそういうのはダメ
940 名前:デフォルトの名無しさん [2007/07/05(木) 19:45:04 ] ぇぇー、ダメって、例えば貼り付けるだけでフォームの特定のコントロールにほにゃららな 機能を追加するってようなのもダメぇ?コントロールをカスタムるより楽じゃん?
941 名前:デフォルトの名無しさん [2007/07/05(木) 20:15:37 ] OSのGUIを使わず、アカウントがビルドインユーザ であるかそうでないか判断する方法しっている方 いましたら、教えて欲しいです。 Visual Basic .NET プログラムで実装します。 コマンド、Win32_API 、レジストリ、WMI でもかまいません。
942 名前:デフォルトの名無しさん [2007/07/05(木) 20:20:07 ] いや・・・いろいろ方法ありますよ
943 名前:941 [2007/07/05(木) 22:20:28 ] ちょっと文章がおかしかったっす Visual Basic .NET プログラムで実装します。 クラスライブラリ、コマンド、Win32_API 、レジストリ、WMI どれか1つでかまいません ということです
944 名前:941 [2007/07/05(木) 23:02:18 ] 自己解決しました。
945 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:14:09 ] >>940 どうやんのそれ プロパティで対象のコントロールを直接指定するの? それなら>>938 みたいなことをする必要は全くない フォームの特定のコントロールを勝手に参照したら そのフォームに依存してしまうだろ
946 名前:デフォルトの名無しさん [2007/07/06(金) 02:50:00 ] >>941 なに使ったの? 俺は調べきれなくって 時間なかった時だったんでNetUserEnum 使ったんだが
947 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:01:19 ] WindowsPrincipal じゃね?
948 名前:デフォルトの名無しさん [2007/07/06(金) 06:31:03 ] Objectクラスの MemberwiseClone メソッドについて教えてください。 これで Clone を作って調べてみると、 cntrlClone = DirectCast(cntrl.MemberwiseClone, コントロールのタイプ名) ここで、元のオブジェクトインスタンスと別ものらしいこと cntrlClone IsNot cntrl は True はわかったのですが、Control でこれを使って作ったCloneを操作すると、 元オブジェクトのインスタンスが操作されてしまいました。 この cntrlClone の Size や Location を変えると、元の cntrl が動いてしまい、 cntrlClone の方は該当の場所には現われてすら来ませんでした。 MemberwiseClone メソッドで作成されるCloneというのは、どういうものなのか 今一よくわからず、これは別のインスタンスを完全に別ものとして作成するのでは ないということでしょうか、あるいはまた扱い方に問題があるでしょうか。 よろしくお願いします。
949 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:51:01 ] >>948 MemberwiseCloneは直接のメンバーのコピーしかしない。 メンバーとして参照型のオブジェクトを持っていた場合は参照しかコピーされないので コピーされたオブジェクトは同じ子オブジェクトを参照することになる。
950 名前:デフォルトの名無しさん [2007/07/06(金) 07:16:55 ] >>949 その 「メンバー」 の意味するものとは、元オブジェクトのフィールドのことですよね、 しかし、Clone 自体のインスタンスは、明らかに、元オブジェクトのインスタンスとは 別物になるはずですよね? それが、cntrlClone と cntrl が別ものとして cntrlClone IsNot cntrl は True とはなっているのに、cntrlClone を操作すると、どういうわけか、cntrl が動いて しまうようなのです。cntrlClone と cntrl の両方が画面に現われるかと思っていると 片方しか現われないのです。つまり、cntrlClone はで来ていないかのように見える のです。 こういうことはおかしいように思うのですが、よくわからないのでした。
951 名前:デフォルトの名無しさん [2007/07/06(金) 07:20:06 ] それとも、cntrlClone への操作が、自動的に cntrl 側にも同時に伝わってしまって 同時に2つとも同じ操作の対象になってしまっているのでしょうか?? まさかそういうことはちょっと信じられないのですが・・・。
952 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 07:37:17 ] class B { public int Ope() { .. } } class A { B b = new B(); public int Ope() { return b.Ope(); } } こういう構造ならいくらAのクローンを作ってもBはひとつ。 a もクローンa もインスタンスは違っても共通の動作になるだろ
953 名前:デフォルトの名無しさん [2007/07/06(金) 07:54:52 ] >>952 そのおっしゃってることの意味は>>949 の意味かと思いますが、 画面にすでに cntrl があった場合に、>>948 のように cntrlClone = DirectCast(cntrl.MemberwiseClone, コントロールのタイプ名) のようにして作成した場合、実体として cntrl と cntrlClone は別モノで、 別々のコントロールとして作成されるとすれば、 cntrlClone.Top = cntrlClone.Top + 10 と操作したら、cntrl の Top が +10 してしまうのはおかしいのではないかと・・・ それとも、cntrl が何かの派生であった場合、Baseクラスに対しても Clone を 別に作成しないといけない、というようなことなのでしょうか?まさか
954 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:13:15 ] Windows.FormsのFormやらButtonがどういう構造になってるかは知らんが、 実体はWin32のアンマネージドリソースなんだから、 SizeやらLocationやらは毎回Win32のリソースに問い合わせてる可能性が高いぞ。 そうなると両方のオブジェクトが同じハンドルのWin32リソースを操作するわけだから 同じになるのは当然だろ。 ICloneable.Cloneが実装されてないのに、中身もわからないクラスのクローンを作るのは 無謀だと思うぞ。
955 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:19:32 ] >>953 既に954が書いてるし、俺はあまりWin32に明るくないんだけど、 要するに、例えばFormにTextbox1があるとして、Form上に見えている テキストボックスはTextbox1そのものではなく、「Textbox1が内部にもっている何物か」 に過ぎないということなんでしょう。 それなら話の辻褄あうでしょ。
956 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 08:44:23 ] >>954-955 どうもです、やっぱり cntrlClone = DirectCast(cntrl.MemberwiseClone, コントロールのタイプ名) ・・・[1] で コントロールの別実体の Clone が作れると思わない方がいいでしょうか? ICloneable.Clone については、 www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=27051 なども参照してみて実装してみたりしてますが、この使い方では結局 Clone の作成は [1] でやっているんですよね。 普通に最初から New でコンストラクトして、必要なフィールドなどを値でコピーして 地道に作成するほかないでしょうか。そうなると、 MemberwiseClone の利用方法が 今一不明になるわけですが・・・どうもよくわかりません
957 名前:デフォルトの名無しさん [2007/07/06(金) 08:48:58 ] >>956 あっ、これ書いてみて今気がつきましたが、この参照サイトにあるのは [1] ではなく、 Dim hWankuma As WankumaData = DirectCast(Me.Clone(), WankumaData) ・・・ Private Function Clone() As Object Implements System.ICloneable.Clone Return Me.MemberwiseClone() End Function となってるところが違うのか・・・、もしかしてこれでしたか?ちょっとやってみます。 だとしたら自分の使い方のミスですね。飯食ってからやってみてまた報告します。 どうもでした。
958 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 09:41:34 ] ああ、くそう ここで交わされる会話がスラスラ理解できるようになりたいw
959 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 11:14:28 ] たいしたこと言ってないから
960 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 12:36:43 ] >>956-957 なんか書いてること読むと基本が理解できてない感じ。 自分でクラス作れない人? だったら場当たり的な「調べ方」では永遠に埒あかないと思うよ。 少なくともクラスと構造体の区別が理解できていれば、 フィールドの値(オブジェクトのメモリーイメージ)だけ複製しても 無意味な場合があることはすぐ理解できるはず。
961 名前:デフォルトの名無しさん [2007/07/06(金) 12:58:22 ] >>960 うーん、おっしゃってることは分ってるつもりですが、 要はコントロールの複製を作るにはこういうメソッド使えない ということでしょうか? もし使えるとしても、では後何をどうすれば複製を作成できるようになるでしょう? 毎回、Newでコンストラクトして作成して、それにフォールド値をいちいちコピーする やり方では、クラスをバージョンアップしてフィールドが増えたりするたびにそこに 手を入れる必要があるので忘れやすく、そういうことを防止するためにはこのメソッドを 使うほうがいいという感じで書いてあるところが多くあるかと思います。 では、現実の実体としてコントロールをこのメソッドも使って複製したい場合、 どれとどれとどれのどのような手続きをへて可能になるのか、それが知りたいのですが、 現状の知識ではわかりません。またそうした使い方をして説明してあるサイトが見つからない のです。 ちなみに、当然というか、>>957 で試してみてもやっぱりだめでした。まー同じことだろうとは 思ってましたが、やっぱりその通りでした。
962 名前:デフォルトの名無しさん [2007/07/06(金) 13:03:03 ] >>954-955 のご指導もありましたが、もしオブジェクトの実体を指すインスタンスが 別途にできていないのだとするとそういうことになるのかもしれませんが、 しかし、たとえフィールド値のコピーだけだとしても、そうだとすると、コントロールの 実体を指すプロパティが他にあって、それのCloneを作成する必要があるということ でしょうか? もしよろしければ、その辺をご指導いただけますか?