1 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 18:07:34 ] 前スレ VB.NET質問スレ(Part25) pc11.2ch.net/test/read.cgi/tech/1203650042/ テンプレは2〜5くらいまでの間にある予定
74 名前:デフォルトの名無しさん [2008/06/09(月) 02:07:50 ] タブコントロールについてWindows フォーム デザイナで自動で生成されるコードの 下の部分なのですが、 Me.TabControl1.Controls.Add(Me.TabPage1) Me.TabControl1.Controls.Add(Me.TabPage2) Me.TabControl1.Controls.Add(Me.TabPage3) Me.TabControl1.Controls.Add(Me.TabPage4) だったものが、いつの間にか Me.TabControl1.Controls.Add(Me.TabPage1) Me.TabControl1.Controls.Add(Me.TabPage3) Me.TabControl1.Controls.Add(Me.TabPage2) Me.TabControl1.Controls.Add(Me.TabPage4) に変わってしまいます。何が原因でしょうか?教えて頂けると助かります。
75 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:52:24 ] フォームを最大化したまま、画面サイズを変更可能にしたいのですが ControlBox = Falseにしても、最大化が解除できてしまいます。 画面サイズを固定にする方法はどうすればよいのでしょうか? ちなみにシステム仕様の関係でFormBorderStyle = None は使えません。
76 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:08:38 ] 画面サイズを固定したいのか変更可にしたいのかどっちだ?
77 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:53:18 ] 途中でディスプレーの解像度を変えたいのではないかとエスパーしてみる
78 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:01:11 ] >>74 重なり順じゃね?
79 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:35:11 ] CDドライブのトレイを開く方法で MciSendString("Set CDAudio Door Open Wait", Nothing, 0, 0) だけだと複数のCDドライブがあったときに最初のドライブしか開きません。 ドライブを指定してトレイを開く方法はないでしょうか
80 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:11:04 ] 質問させてください。 VB2005でハードディスクのAAMとAPMを設定する プログラムを作りたいのですが、参考になるような サイトなどご存知の方いましたら、教えてください。 よろしくおねがいします。
81 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:39:34 ] >>79 あるよ
82 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:39:06 ] formのloadイベントが、 frm = new frm frm.text = "たいとる" frm.visible = false frm.visible = true <ここで発生します 要するに画面表示を行うタイミングで発生しています。 newのタイミング、又は、画面表示を行わずに任意のタイミングでLoadイベントを発生させるにはどうしたらいいですか
83 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:53:49 ] コンストラクタに書く
84 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:00:23 ] 処理を移せばまあ、似た様なことにはなると思います。 ただloadを任意に呼べたほうが全体的にやり易いんですが、無理ですかね
85 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:03:30 ] 間違えた。 private withevent frm as form1 で宣言してて宣言してるところで frmのloadイベントに処理を書きたいので コンストラクタではいろいろ無理があるのでした
86 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:06:09 ] 何がしたいのか分からない form1に手を入れられるんだったらコンストラクタに書くなり 初期化用のメソッドを定義するなりすればいい form1に手を入れられないんだったら,表示する前にfrm.Size=…とか外から弄れば同じこと
87 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:19:01 ] したいことは 「画面表示を行わずに任意のタイミングでLoadイベントを発生させる」 です。 どういう方法がありますか
88 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:27:57 ] 継承して基底クラスのOnLoadを呼ぶしかない 表示される直前に発生するのがLoadイベントなんだから関係ない時に発生させるのはおかしい
89 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:56:23 ] >>79 result = mciSendString( "open " & _Drv & " type cdaudio alias cdrom", space(255), 255, 0) result = mciSendString( "stop cdrom", space(255), 255, 0) result = mciSendString( "set cdrom door open", space(255), 255, 0) result = mciSendString( "close cdrom", space(255), 255, 0)
90 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:59:16 ] ああ、nothing,0でもいいのか…
91 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:07:27 ] 質問です。 文字列のバイト数を調べるということはできますか? いくつかソースや例はあったのですがバージョンが違うらしくて途方にくれてます・・・。
92 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:09:25 ] ttp://www.atmarkit.co.jp/fdotnet/dotnettips/010str2byte/str2byte.html
93 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:15:58 ] お早い回答ありがとうございます・・・っ どうVBでやればいいのかさっぱりですが これをヒントに格闘再開してみます・・・。
94 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 06:17:30 ] >>81 それ面白いの?
95 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:07:00 ] >>94 というより、質問の仕方が悪いことに突っ込んでるんだろ。 "ありますか?"と聞かれれば返答はbool型で返ってくるもんだよ。 プログラミングの前に日本語をしっかり習得するべきだと思う。
96 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:20:35 ] 質問です。 vb.netと他の言語(C#)のファイルをひとつのプロジェクトに混在させることはできないのでしょうか? たとえば、vb.netで作ったクラスをc#側から参照・呼び出しするといったようなことです。 調べてみても分からなくて・・よろしくお願いいたします
97 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:52:14 ] >>96 ビルドしてできたDLLなりEXEなりを他のプロジェクトの参照に追加すれば
98 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:03:37 ] >>95 よくいる捻くれプログラマだな。
99 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:05:49 ] 混在させる理由って他人が作ったライブラリを組み込むとかその程度だろ 自分で作って混在は捻くれてるな
100 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:24:53 ] >>96 ひとつのプロジェクトではなくひとつのソリューションということなら Visual StudioのStandard Edtion以上を購入する。 Expressでやりたいなら>>97 のとおり。 EXEなりDLLをひとつにしたいなら裏技的というか試練の道になる。あきらめたほうが良い。
101 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:24:25 ] expressでも出来るだろ。 VWDだけは無理だが。
102 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:59:55 ] 基本的な事を質問させて下さい。 Dim url As String = "aaa.jp " System.Diagnostics.Process.Start(url) のように一回一回変数に代入するのと、 System.Diagnostics.Process.Start("aaa.jp ") のようにソースを短くするのでは、 どちらが動作が速いのでしょうか。 また、二つ以上の引数を要求するメソッド等の場合では変わったりするのでしょうか?
103 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:19:03 ] 誤差の範囲内 その二つならどうせ最終的には同じバイナリが実行される
104 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:42:37 ] >>102 どっちのコードでコンパイルしてもコンパイラが最適化してくれるから、 最終的なEXEの中身は同じになるはず。
105 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:51:20 ] 何でもこんな些細なことを気にする人が多いの?
106 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:34:06 ] >>95 それってただの無能さをひけらかしてるだけだよw 有能なら相手が何を知りたがっているか考えて そこから先も答える
107 名前:デフォルトの名無しさん [2008/06/11(水) 19:30:17 ] VB6で書かれたインターフェース部分のコードから、C++で書かれたDLLを読み込んで利用していたものを VB.Netで読み込みなおして再利用したいと思っています。 このDLL、COMに非対応の様なのですが、書き直しなしで読み込みってできるでしょうか? 出来ないならある程度楽そうな方法としては何が思いつくでしょうか? .Net環境歴短いので、初心者質問申し訳ございません。
108 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:12:47 ] >>107 VB6でDeclareを使って呼び出していたDLLをVB.NETで使いたいということでいいのかな? VB.NETにもほぼ同等のDeclareがあるからこれを使う。 違いもありおそらくVB側のコードは手を入れる必要がある。 DLL側の変更はいらないはず。 プラットフォーム呼び出しやP/Invokeでぐぐったらいい。
109 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:39:55 ] >>106 バカはお前w 分かってるけど教育的指導ってやつなのに
110 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:51:05 ] 日本語遊びしたいならよそ池。
111 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:26:14 ] 教育的指導とかこのスレに必要なくね ここどこだと思ってんだよwww
112 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:56:48 ] すみません、また質問させて下さい。 Clickのイベントで、複数のハンドルがある時に、 Clickハンドルを呼び出したオブジェクトのTagプロパティを参照したいのですが、 皆さんならどのような方法を用いますでしょうか。 どうかご口授下さい。
113 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:57:48 ] sender引数をControlにキャストする
114 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:06:16 ] >>112 何を言ってんのか分からない
115 名前:107 [2008/06/11(水) 23:07:55 ] >> 108 どうも、ありがとうございます これでいろいろと目処が立ちました。
116 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 23:10:05 ] >>112 教育的指導も必要かと思った
117 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 23:53:45 ] >>114 フォームにボタンを3つ置いて、そのボタン3つのクリックイベントを同じイベントで処理するようにしています。 そのクリックイベントで、押されたボタンのTagプロパティを参照したり、ForeColorを変更したりしたいのです。 >>113 Me.Text = CType(sender, Control).Tag のような事でしょうか?
118 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:11:52 ] >>117 Yes
119 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:59:59 ] Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler Button1.Click, New EventHandler(AddressOf Me.ButtonClick) AddHandler Button2.Click, New EventHandler(AddressOf Me.ButtonClick) AddHandler Button3.Click, New EventHandler(AddressOf Me.ButtonClick) End Sub Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Dim A As String AA = CType(sender, Control).Text Me.Text = AA End Sub のようにしているのですが、エラーが起きてしまいます。 何が原因なのでしょうか?
120 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:03:11 ] >>119 × AA = CType(sender, Control).Text ○ AA = Ctype(sender, Button).Text ちっとは頭使おうな。ControlのメンバにTextというものはないとかどうとか言われてるんだろ? 元がボタンなんだからボタンにキャストしる。
121 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:03:16 ] エラーに書かれてるとおりだと思うよ
122 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:03:47 ] >>120 Control.Text は存在してるよ
123 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:07:04 ] >>122 適当なこと言ってスマナカッタ。 ちっと検証してみるわ
124 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:15:41 ] 俺の環境ではControlのままでも問題なく動作したな・・・ というかButton1,2,3の型はなんだ? ×Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) ○Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) これで問題なさそうだけど
125 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:14:25 ] >>124 ありがとうございます。 思う通りにできました。 イベントを作る時に一つ下のイベントから少しコピーしたので、その時に間違った引数になってしまったみたいです。 お騒がせして申し訳ありませんでした。
126 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:58:02 ] 87 名前:男です女です名無しです[] 投稿日:2008/06/12(木) 11:16:32 ID:K9IgFOCw この歌、荻野目洋子の 「六本木純情派」 とだいぶ似ている 気がするのは俺だけ? 88 名前:男です女です名無しです[] 投稿日:2008/06/12(木) 11:21:47 ID:K9IgFOCw YouTube - 荻野目洋子 六本木純情派 1987.12 jp.youtube.com/watch?v=FivSOEmkKUE 89 名前:男です女です名無しです[] 投稿日:2008/06/12(木) 11:25:49 ID:K9IgFOCw YouTube - 鼠先輩 「六本木〜GIROPPON〜・クラブ編」 jp.youtube.com/watch?v=_s6edMfX75I&feature=related やっぱり似ている。
127 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:47:07 ] 単一インスタンスのアプリケーションを作成するにチェックし、 スタートフォームを最小化、タスクバー表示なしにして、起動してるんですが (意図通りにスタートフォームは非表示で起動されています。タスクトレイ常駐させています) 起動後、もう一度exeをクリックすると、スタートフォームが表示されてしまいます。<A どうしたらAを起きないようにできますか?
128 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:05:32 ] >>127 > どうしたらAを起きないようにできますか? どういう動きにしたいの[ もう一度押した時に二番目以降も同様に非表示で起動したいの[ それとも多重起動はさせないようにしたいの[ 多重起動防止ならMutex辺りを調べると幸せになれるかも。
129 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:03:18 ] DMI画面でWindowsアプリを作成しているのですが、問題が発生してしまいまして… どなたか解る方がおられましたらご教授お願いします。 問題点:DMIの親画面の適当な場所にボタンを貼り付ける。 子画面を作成、実行し、子画面を呼び出すと、なぜかボタンだけが子画面の上にきてしまう。 なぜこういう問題が起こるのでしょうか??
130 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:44:29 ] >>128 Private Sub MyApplication_StartupNextInstance(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) _ Handles Me.StartupNextInstance e.BringToForeground = False これで表示されなくなりました。
131 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:48:37 ] >>95 方法を知りたくてありますか?って聞いてる人間に対して あるよ。なんて答えたら実生活なら池沼扱いだぞ
132 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:55:17 ] 俗にいうKYですな
133 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 20:56:59 ] >>131 2ちゃんで「実生活なら」とか言ってる時点でお前も池沼
134 名前:デフォルトの名無しさん [2008/06/14(土) 01:01:53 ] asp厨房からやっとvb.netに昇進できます VBとほとんど同じだろと思っていたら、難しいですね、ぜんぜん違う 継承って何だ?宣言だけじゃだめなのかよ!状態 変数宣言したのに、なんか変数の値が知らない間に変わってるし やさしい本ないすか?
135 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:01:19 ] String型の1という数字を使ってコントロールの番号を指定するにはどうやったら良いですか? 例えば TextBox1に 3 と入力してある場合に PictureBox3.Image = ("******") ということをやりたいです。宜しくお願いします。
136 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:10:18 ] >>134 aspやったことないけど、そのレベルならVB中学校から始めた方が良い。 VB関連で2000円ぐらいで買える本よりはずうーっと親切だから。 一通り基礎が終わったらリファレンス本一冊あれば十分。 >>135 下三行の意味がわからない。
137 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:16:36 ] select文でいいんじゃね?
138 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 04:38:56 ] レスありがとうございます。 >>136 わかりにくくてすみません。 使い方のような説明をさせていただきます。 例えば、Label1に画像のファイル名が書いてあって、 そのファイルを1〜10まであるピクチャーボックスのどれに表示するかを テキストボックス1に数字を入力して1ならPictureBox1に2ならPictureBox2に という感じで表示させたいです。
139 名前:138 mailto:sage [2008/06/14(土) 04:39:22 ] 実際はそういう用途ではなくて、PictureBoxどうしのD&Dで画像を入れ替えたいのですが、 表示した手段があっていないのか、表示がされているのに MouseDownイベント内の PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.All) を実行すると Object reference not set to an instance of an object.というエラーが出てしまうため、 PictureBox1.DoDragDrop("1", DragDropEffects.All) というようにして、どこの画像をドラッグしてきたのかということを1という数字で 渡すようにしました。 PictureBox1.DoDragDrop(PictureBox1, DragDropEffects.All) という方法が出来れば良いのですが、そうすると PictureBox2_DragEnterイベント内の If e.Data.GetDataPresent(DataFormats.*****) Then e.Effect = DragDropEffects.Copy の******の部分の書き方が分からないため使えないでいます。 >>137 Selectですとピクチャーボックスが沢山ある場合にCaseの記述がその数だけ 必要になってしまうので、簡単にしたいです。 (プロシージャをコピペで増やす際に中身を書き換えなくて済むようにしたいです。
140 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:01:14 ] >>135 FAQだ。過去スレ見れば出てくると思うが、VB6にあったその機能はなくなった。 PictureBoxの配列を自分で作って必要なものを放り込め。
141 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:06:43 ] System.Reflection
142 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:59:36 ] Form.Controls("pictureBox1") という方法もあるが>>140 のをすすめる。
143 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 06:16:47 ] レスありがとうございます。 今回は配列の方法でやることにします。 ありがとうございました。
144 名前:134 [2008/06/14(土) 22:04:45 ] >>136 ありがとうございます! 今見てますが、なかなか良さそうです 今の僕にピッタリかも
145 名前:デフォルトの名無しさん [2008/06/15(日) 02:03:26 ] またお助けください。 Private Sub PictureBox2_DragDrop(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox2.DragDrop のイベントの中で PictureBox2の2という数字を文字列として取得したいのですが、どうすれば良いですか?
146 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:36:36 ] "2"
147 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 09:17:49 ] >>145 「2という数字」の意味が分からんがエスパーすると sender.name.substring(10) って意味か?
148 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:51:24 ] それなら sender.ToString.substring(10) じゃないか?
149 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:49:20 ] レスありがとうございます。 sender.ToString.substring(10) でできました。! 分かりにくい説明を察して頂きありがとうございました。
150 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:12:43 ] 作業管理表のプログラムを作成しています。 その中で、作業内容の登録時に 作業開始予定日が作業終了予定日より後の日付になっていたら 作業登録ボタンを押下後にエラーメッセージを表示させたいです。 調べてみたんですが、それらしい単語も分からないのでまったくヒットせず・・・。 このようなチェックに名前ってあるんでしょうか? 良ければサンプルコードを教えてもらえるとありがたいです。
151 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:53:52 ] >>150 悪いけどググったら出る内容はなるべくググって欲しい ttp://www.google.com/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&num=50&q=VB.NET+%E6%97%A5%E4%BB%98+%E6%AF%94%E8%BC%83
152 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:22:50 ] >>151 150じゃないけど、ありがとう。
153 名前:VB始めて1カ月 [2008/06/16(月) 16:43:23 ] 文字列の最後にくっついているアスキーコードで 00 の文字を trimEnd で取り除きたい。 C言語の \0 はVBではどう表現するのか教えてちょうだい。
154 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:10:35 ] Chr関数
155 名前:VB始めて1カ月 [2008/06/16(月) 17:23:04 ] >>154 ありがとう うまくいった
156 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:46:20 ] windowsのプロダクトキーってどうやって取得しますか
157 名前:デフォルトの名無しさん [2008/06/17(火) 02:54:50 ] 画像ファイルを右クリックした時にメニューに表示される 「編集」を選んだときに起動されるアプリのパス名を取得したいのですが、 教えて欲しいです。 自分の場合はmspaintが設定されているので、レジストリエディタで %SystemRoot%\system32\mspaint.exe を検索してみたところ、いくつかヒットはするのですが、どれのレジストリに メニューの「編集」に設定されているものなのか分かりませんでした。 画像ファイルのダブルクリックは「Windows 画像とFAXビューア」というのが 設定されているので、Process.Startを使うとビューアが起動されてしまい mspaintが出てくれません。お助け下さい。
158 名前:157 mailto:sage [2008/06/17(火) 03:44:53 ] ここの場所から取得してみたのですが、大丈夫でしょうか? HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\image\shell\edit\command
159 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:03:20 ] VB.NET初心者なのです。 FormAから呼び出しているFormBを閉じた際に FormAを閉じて(FormBで変更した内容のデータをFormAに反映してから) FormAを再ロードしたいのですが Private Sub FormB_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed Dim a As New FormA a.Close() a.show() とすると破棄されたオブジェクトにアクセスできません。 というエラーが出ます。 どうしたら回避できるでしょうか? よろしくお願いします。
160 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:04:26 ] 閉じるんじゃなくて非表示にする
161 名前:159 mailto:sage [2008/06/17(火) 12:36:29 ] >>160 度々すみません。 a.hide()もしくはa.visible = False後に a.showとすると FormAが2重に開かれてしまうのですが…
162 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:41:30 ] そんなむちゃなでたらめなコードがまともに動くかいな
163 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:44:59 ] Newって言葉和訳できる?
164 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:15:12 ] 出来ないからいるんだろ?
165 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:03:06 ] Private Sub FormB_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed FormA.Hide() 'FormBで変更した内容をFormAに反映させる記述をこのへんに FormA.Show() End Sub
166 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:35:57 ] すみませんが、ご教授お願いいたします。 フォームAからフォームBを呼び出しますが、 既にフォームBが開かれていた場合、二重に呼び出さないようにするための条件式を教えていただけますか?
167 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:40:45 ] 単一のFormBインスタンス使いまわせば十分じゃね?
168 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:43:58 ] >>166 普通にShowやShowDialogを使っていれば二重に呼び出す事は無いと思うんだけどな。 もし二重になってしまう場合でも、呼び出す際に変数を使って条件分岐させればいいと思うし。 どういう場合の事を言っているの?
169 名前:166 mailto:sage [2008/06/17(火) 16:51:04 ] すみません、言葉が足りませんでした。 ちょっと長くなりますが、以下詳細です。 ---------------- フォームA(メインフォーム) フォームB(サブフォーム) フォームC(サブフォーム) があります。 (1)フォームAからフォームBをモーダルフォームとして開きます。 (2)フォームB・Cにはラジオボタンが配置されており、ラジオボタンのチェックの移動で フォームB・Cを行き来できるようにします。 (その際、もう1つのフォームは閉じる) (3)フォームB・Cともに「終了」ボタンが配置されており、ボタンを選択することで、 自フォームを閉じ、フォームAに遷移します。 ---------------- 長くなるので1回区切ります。
170 名前:166 mailto:sage [2008/06/17(火) 16:52:50 ] 以下、ソースです。 <フォームA> Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click FormB.ShowDialog(Me) FormB.Dispose() End Sub
171 名前:166 mailto:sage [2008/06/17(火) 16:55:23 ] <フォームB> Private Sub FormB_Show(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Shown Me.RadioButton1.Checked = True Me.RadioButton2.Checked = False FormC.RadioButton1.Checked = False FormC.RadioButton2.Checked = True End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged Me.RadioButton1.Checked = True Me.Hide() FormC.ShowDialog(FormA) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click FormA.Show() FormC.Close() Me.Close() End Sub
172 名前:166 mailto:sage [2008/06/17(火) 16:57:03 ] <フォームC> Private Sub FormC_Show(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Shown Me.RadioButton1.Checked = False Me.RadioButton2.Checked = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click FormB.Close() Me.Close() FormA.Show() End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged Me.Hide() FormB.Show(RollingPlan) End Sub
173 名前:166 mailto:sage [2008/06/17(火) 17:02:09 ] 長文、すみませんでした。 このソースの場合、フォームA → フォームB → フォームC と遷移し、フォームCのボタン2をクリックして閉じても、 もう1つフォームCが現れてしまいます。。。 恐らくフォームBのラジオボタン2のチェックを行った際に、 ラジオボタンを元の状態に戻すための一文、 Me.RadioButton1.Checked = True を入れているために、この命令実行後にもう1つフォームが開いているのかなと推測します。 ただこの一文がないと、 フォームB → フォームC → フォームB と戻ってきた場合に、ラジオボタンが最初の状態に戻っていないため、 やむなく入れている次第です。 そのため、フォームBからCを開く際に、既にフォームCが開いていた場合に 二重に開かないように制御出来れば良いと考え、今回の質問に至りました。
174 名前:デフォルトの名無しさん [2008/06/17(火) 17:36:52 ] 作成したダイアログベースのプログラムでファイル選択機能が必要になりました。 最初にOpenFileDialogクラス呼び出しでファイル選択ダイアログを出したのですが ダサい、使いにくいと教授が言ってきたので、エクスプローラーの様なファイル選択を行うためのコントロールを埋め込みたいのですが その様なものがどこかに(できればフリーで)公開されていないでしょうか?