vb6.0においてのフォームについて教えてください。

例として「Form1」という名前のフォームがあるとします
その「Form1」を閉じるためのコマンドを誰か教えていただけないでしょうか?

ちなみに「Form1」はアクティブになっている時、いない時両方の場合が
考えられるのですが、関係あるのでしょうか??

皆様宜しくお願いします。

A 回答 (10件)

itohhさんの回答にちょっとだけ補足します。



他のアプリケーションであっても、自分自身のアプリケーションであってもメッセージボックスの制御は基本的に可能です。

まず、他アプリのメッセージボックスの場合はFindWindowでメッセージボックスを検索し、ダイアログのハンドルを得るのは必須です。

↓これについて補足
>SendMessage関数でWM_CLOSE

それ以外に情報が必要です。メッセージボックスの中に「はい」「いいえ」ボタンがあって、「いいえ」ボタンを押したようにして閉じたいのであれば、「いいえ」ボタンのハンドルとvbNo定数値が必要です。
それらをSendMessageにてWM_CLOSEと一緒に送らないと、WINDOWS自体が不安定になります。
    • good
    • 0
この回答へのお礼

的確なアドバイスありがとうございます
早速試してみたいと思います。

お礼日時:2001/12/03 19:48

あの、2回間違いと、申し訳ないのですが、TimerなどのIntervalは


プロパティウィンドウじゃないと効果ありませんでした。
下のコードのスペースが3つ、ついてるところは消したほうが
効率いいかもしれません。

Private Sub Timer1_Timer()
   Timer1.Interval = 1000
End
End Sub

Private Sub Timer2_Timer()
   Timer2.Interval = 1000
Unload Form1
Form2.Show
End Sub
    • good
    • 0

すみません!!下のコードに間違いがありました。

Label2は下記のコードを使ってください。
間違いの点は、このコードは、本来Timer2を
アクティブにするのに、Timer1をアクティブにしていました。
大変ご迷惑おかけいたしました。

Private Sub Label2_Click()
Label2.Caption = "Form2開く"
Timer2.Enabled = True
End Sub
    • good
    • 0

小4のkunpaです。


 単に、Form1を終了して、別のForm(例として、Form2)を開くのであれば、
「Unload Form1
Form2.Show」と書けば、Form1を閉じて、Form2を開くことができます。
これを利用すれば、タイマーコントロールで設定できます。
また、ソフトを終了するなら、「End」というコードを書き込めば、
ソフトが終了します。
 なので、Formがアクティブになっていない時も、タイマーコントロール
(例:Interval 1000=1秒)のコードに[Unload Form1
                  Form2.Show]または[End]のコードを
書き込んでしまえば、Formがアクティブでなくても、タイマーで設定した
Intervalの時間になれば、UnloadまたはEndします。
 タイマーのEnabledをFalseにして、LabelをクリックしたらEnabledをTrueに
しても面白いです。
 サンプルコードです。Labelを、
「終わり(Label1)」と「Form2開く(Label2)」を用意して、終わりをクリックすると、1秒後に終わって、Form2開くをクリックすると1秒後に閉じるコード
です。Timerのコードを抜けば、簡単なプログラムに使えます。
CaptionとIntervalはプロパティウィンドウで設定してもいいです。
Timer1とTimer2のEnabledはプロパティウィンドウで
Falseにしておいてください。
参考になれば幸いです。

Private Sub Label1_Click()
Label1.Caption = "終わり"
Timer1.Enabled = True
End Sub

Private Sub Label2_Click()
Label2.Caption = "Form2開く"
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Interval = 1000
End
End Sub

Private Sub Timer2_Timer()
Timer2.Interval = 1000
Unload Form1
Form2.Show
End Sub
    • good
    • 0

こんにちは。

itohhといいます。

先のアドバイスちょっと間違いがありました、すみません。

>自分自身のメッセージボックスを制御するのは基本的に出来ないと思った方がよいですよ。
正しくは、
自分自身以外(他のプロセス)のメッセージボックスを制御するのは基本的に出来ないと思った方がよいですよ。
    • good
    • 0
この回答へのお礼

なるほど、やっぱり自分自身以外のMSGBOXの制御は
難しいんですね..ためになりました。
ありがとうございました

お礼日時:2001/12/03 19:50

こんにちは。

itohhといいます。

>プログラム上であるソフトを起動するとメッセージが立ち上がって
>くるので、そのメッセージボックスを閉じたいのですが...
自分自身のメッセージボックスを制御するのは基本的に出来ないと思った方がよいですよ。

例えば、そのメッセージボックスを閉じてしまった場合、起動したソフトまで終了してしまう
ということはないですか?

それでも、OKでしたらば。
1.FindWindow関数でWindowハンドルを取得する。
2.そのWindowハンドルにSendMessage関数でWM_CLOSEを送信する。
これで、閉じてくれるとは思いますが、先にも説明したようにソフト自体が終了して
しまうかもしれません。
    • good
    • 0

あ、ゴメン。

「閉じ」たかったのね。勘違いしてたので最初の回答は無視して下さい。
ARCさんありがとうございます。
    • good
    • 0

少し蛇足になりますが、#1でannie_xさんがお書きになった「Hide」はフォームを「隠す」為のコマンドで、「閉じる」とは意味合いが異なります。



フォームを隠しただけでは、まだメモリ上にフォームの内容が保持されています。
(つまり、Form1上のテキストボックスに何か入力したあと、
Form1.Hide
Form1.Show
としても、入力した内容が残った状態でフォームが再表示されます。

Unload Form1だと、メモリ上からもフォームを削除してしまいますので、
Unload Form1
Form1.Show
とすると、Form1上のテキストボックスの内容は初期化されます。



#annie_xさま、つっこんじゃってスミマセン。この文章は回答に正確を期すために投稿しました。個人攻撃の意図は全く無いことをご理解ください。
お気を悪くなさらないで下さいね(^^;
    • good
    • 0

UnLoad Form1


をお試しください。
Form1のアクティブ/非アクティブに関係なく、Form1を閉じてくれます。
    • good
    • 0

>「Form1」を閉じるためのコマンド



Form1.Hide です。

>「Form1」はアクティブになっている時、いない時両方の場合が考えられるのですが

具体的にコードを見ないとなんともいえませんが、普通は関係ないですよ。

ちなみに表示させるときは Form1.Show です。
このあたりフォームのヘルプから、「メソッド」を見てみると書いてあると思います。

この回答への補足

プログラム上であるソフトを起動するとメッセージが立ち上がって
くるので、そのメッセージボックスを閉じたいのですが...

そのメッセージは最小化の状態でタイトルバーに”Mail”と
かかれた状態で立ち上がってくるので、

オブジェクトの名前が"Mail"なのだと思って、

Mail.hide

としたら”オブジェクトが必要です”とエラー表示されてしまいました。

このメッセージボックスをプログラム上で閉じるように制御する方法
を知りたいのです。

説明が足りなくて申し訳ありません。

補足日時:2001/12/03 00:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccess2000のフォームでのフォームのIMEが、2度目以降変更してしまう。

アクセス初心者です。
Accsss2000のフォームでのデータ入力を楽におこなうために、例えば名前ならばテキストボックスのプロパティシートのその他タブから、IME入力モードをオンにしてかつIME変換モードを人名/地名に変更したのですが、1回目の入力はIMEが全角・人名モードになるのですが、2度目以降は半角カタカナ・人名/地名モードになってしまいます。全角ではありません。なぜでしょうか?
また上のタブにIME入力モード保持というのもありますが、どういう時に利用すればよいのでしょうか?

Aベストアンサー

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、「ひらがな/全角カタカナ/半角英数」などのモードを特に指定
 しない場合に使用します。そのため、特定モードで固定したい場合は、
 それに合わせた設定値(ここでは「ひらがな」)を指定する必要がある、
 ということです)


> 上のタブにIME入力モード保持というのもありますが、どういう時に
> 利用すればよいのでしょうか?

私自身はこの設定は使用していないのですが・・・(汗)

例えば、取引情報を入力する場合、『企業略称』テキストボックスには
「アルファベットの略称」や「漢字の略称」、「カタカナの略称」がそれぞれ
連続することになります。
このとき、同テキストボックスの『IME 入力モード』を「ひらがな」などに固定
してしまうと、アルファベットやカタカナの略称のデータを入力する際には
毎回手動で「全角カタカナ」や「半角英数」に切り替える・・・という使い方を
する方もいる可能性があります。
『IME 入力モード保持』は、恐らくそういう場合を想定した機能ではないかと
思います。
(もちろん、ひらがなからの変換で全角カタカナや半角英数に変換するように
 している人の場合は、切替は不要ですので、この設定は使用しなくても
 かまわないことになります)

> 1回目の入力はIMEが全角・人名モードになるのですが、
> 2度目以降は半角カタカナ・人名/地名モードになってしまいます。

恐らく、1回目の入力から2回目に当該テキストボックスへの移動までの
間に、半角カタカナを指定したテキストボックス(またはコンボボックス)を
経由しているのではないでしょうか。
(或いは『IME 入力モード』が「オフ」や「使用不可」、または英数系?)

ともあれ、回避策としては、『IME 入力モード』を、現在の「オン」から
「ひらがな」に変更します。
(「オン」は、...続きを読む

QVB.NET Form1からForm2を開いたり閉じたりする方法

VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。
'-----------------------------------
Private Sub CheckBox2_CheckedChanged ・・・
  Dim f_cnt As Integer
  Dim form2 As New Form2()
  f_cnt = My.Application.OpenForms.Count
  If CheckBox1.Checked = True Then
    If f_cnt = 1 Then form1.Show() 'モードレスフォームとして表示する
  Else
   form2.Close() ←閉じない
  End If
End Sub
'-----------------------------------

VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。
'-----------------------------------
Private Sub CheckBox2_CheckedChanged ・・・
  Dim f_cnt As Integer
  Dim form2 As New Form2()
  f_cnt = My.Application.OpenForms.Count
  If CheckBox1.Checked = True Then
    If f_cnt = 1 Then form1.S...続きを読む

Aベストアンサー

Form1にあるCheckBoxがCheckBox1なのかCheckBox2なのか・・・
>Private Sub CheckBox2_CheckedChanged ・・・
>If CheckBox1.Checked = True Then
ただ、vb.netでは
Private Sub CheckBox2_CheckedChanged(...) Handles CheckBox1.CheckedChanged
と言うのはアリで、上の場合ならCheckBox1のCheckedChangedイベントになります。
質問の・・・がどうなってるのかにもよりますが。
それと、vb2002,vb2003で必要だった(と言うかこちらが正当だという話もある)
Dim Form2のインスタンス As New Form2()
はいらないみたいです。
と言う訳で、Form1にあるCheckBox1からForm2と言う場合です。
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
AddHandler Form2.FormClosed, AddressOf Form2FormClosed
Form2.Show()
Else
Form2.Close()
End If
End Sub
Private Sub Form2FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs)
CheckBox1.Checked = False
End Sub

Form1にあるCheckBoxがCheckBox1なのかCheckBox2なのか・・・
>Private Sub CheckBox2_CheckedChanged ・・・
>If CheckBox1.Checked = True Then
ただ、vb.netでは
Private Sub CheckBox2_CheckedChanged(...) Handles CheckBox1.CheckedChanged
と言うのはアリで、上の場合ならCheckBox1のCheckedChangedイベントになります。
質問の・・・がどうなってるのかにもよりますが。
それと、vb2002,vb2003で必要だった(と言うかこちらが正当だという話もある)
Dim Form2のインスタンス As New Form2()
は...続きを読む

Qフォーム等入力時においてIMEが働かない(?)

よく起こる現象で、インターネットでフォーム入力や、Yahooとかの検索入力で日本語入力をしたいときに、IMEが働かない現象が起きています。半角英数のみ入力ができます。私の環境だけでしょうか‥。
キーボードの「半角/全角」キーが効かないので、IMEツールバーを出して、マウスで日本語入力の「あ」にしても入力画面では半角英数に戻ったりします。
Wordやメモ帳を起動すると、正常に働くので、メモ帳を立ち上げてそこへ入力して、コピーしてペーストをしたりして対処をしています・・。
常にメモ帳を立ち上げておけば解決とかの意味ではありません。
IEをアクティブウィンドウにした場合、IMEが働くなくのです。

Aベストアンサー

確かIEのバグだったと思います。

対処法のリンクを貼っておきますので、参考にしてください。
http://www.tku.ac.jp/~densan/local/ie7-ime/ie7-ime.html

QForm1のボタンを押すとForm2が表示されて、Form1をクリックしたらBeep音

初歩的な質問ですみません。
タイトルそのまんま(しかも長い --;)なんですが。
よく見かけるもので、Form1でボタンを押すとForm1より小さいForm2が表示されて、そこでOKボタンを押さないとForm1に戻れなくて、その時にForm1の方をクリックするとBeep音が出る、っていうのがありますよね。あれはどうなっているんですか?Form2の表示まではできるんですけど、その先が分かりません。教えて下さい。お願いします。

Aベストアンサー

Form2.Show vbModal

でOKです。

QWebフォームのIMEモードを入力項目毎に自動切替

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにアプリケーション側で制御されるものが大半だと思っておりました。それを聞いてある人は「そんなことはない、世の中の大半のアプリはそんなことを制御していない、「普通」は自分でIMEで制御しながら入力するものだ」、と言っていたので議論になりました。これからウェブサイトを作ろうと思っているので、最終的にはこの議論はアプリ側にそのような実装をするかどうかというところに帰着するのですが、まずは「一般的にどうなのか」というところでご意見を頂きたいと思います。ちなみに、日本のメジャーなサイト(航空会社、ポータル、携帯電話、電気屋)10個でユーザ登録フォームを確認したところ、名前欄をクリックしてもいずれもIMEのモードはひらがなに変更されませんでした。そこで今は友人が正しくて、僕が間違っていたどころか、「そもそも、名前入力時に自動的にひらがなにモード変換されるようなサイトって本当にあるのだろうか。。」というような状態になっております。どなたか、教えてください。よろしくお願いします。

ある人と話していて、議論になったので質問します。世の中にはたくさんのウェブフォームがあって、名前や住所、電話番号などの登録情報を入力することが多々あります。あまり深く考えたことはなかったのですが、私はなんとなく、「名前や住所のテキスト入力時には自動的にIMEの入力モードが日本語(ひらがな)になり、電話番号やメールアドレスのテキスト入力時には英数になる」ものだと思っていました。自分でIMEを操作することなく、テキストフィールドにタブで移動したりもしくはマウスをクリックしたときにア...続きを読む

Aベストアンサー

IMEのON/OFFができるスタイルシート「ime-mode」は、Internet Explorerが独自に追加した仕様で、Internet Explorerでは入力モードが切り替わりますが、その他のブラウザでは保証されません。
http://www.htmq.com/style/ime-mode.shtml

今、確認したところ、IE8はもちろん切り替わり、Firefox 3.6も切り替わりましたが、Google Chromeは切り替わりませんでした。
Opera,Safari,Sleipnir…等は試してません。

大手のサイトでは「より多くのブラウザで表示できること」が求められますので、独自仕様の「ime-mode」を使っているところは少ないのではないでしょうか。
逆に「Internet Explorerしか表示できなくて良い」と割り切ってるサイトや、社内だけに公開するようなページは「ime-mode」が使われていると思います。

Qform2 から form1に戻ったとき、form1のTextboxの内容を消したくないのですが

.NETのBasicでform1からform2に移行するため
Dim F2 As New Form2()
Me.Hide()
F2.Show()

この後、form1にもどるため
Dim F1 As New Form1()
F1.Show()
Me.Hide()
上記のように書くと、form1のTextboxの内容が消えてしまいますよね。

これを消さずにまたform1のTextboxの編集が続けられるようにしたいのですが、どうすればいいでしょうか

ただ単にform1を見えなくする方法が違うのでしょうか

初歩的な質問ですいません。

Aベストアンサー

Form1側を
Dim F2 As New Form2()
Dim ret As Integer
Me.Hide()
ret = Form.ShowDialog()
If ret = DialogResult.OK Then
Me.Show()
End If
としておいて
Form2側のクローズイベントで
Me.DialogResult = DialogResult.OK
という具合にする方法もありますよ。

QACCESS フォーム上 テキストボックスを移動するごとに文字の入力モードが戻ってしまう

ACCESSでフォーム上で入力をしています。
テキストボックスを移動するごとに半角英数になってしまい非常に不便です。

テーブルではIME入力モード:ひらがな、IME返還モード:一般としています。
テーブルのデザインビューの状態では指定している通りのひらがなで入力できるのが、フォームになると半角英数の状態です。
フォームのプロパティから何か設定を変更しなければいけないのでしょうか?
よろしくお願い致します。

Aベストアンサー

maigo-no-konekoさん
ACCESS2000では次の機能があります。
テーブルの項目定義のIMEの設定内容が引き継がれる仕様なのか
否か不明ですが、フォームの定義画面でテキスト項目やコンボボックス
など入力項目毎に指定します。
(ただし、シフトキーを押しながらマウスクリックすることで
複数選択できます)

1)テキストポックスのプロパティ画面を呼び出します。
2)その他 タブにIME関連の項目があります。
  IME入力モード保持 直前に入力した項目のIMEの入力設定
  状態を引き継ぐ場合は「はい」にします。直前の入力項目の
  設定によらない場合は「いいえ」にします。
  IME入力モード オンまたはひらがな等にします。
           ここでご希望の入力方法を選択します。
  IME変換モード 一般(人名や地名などを入力す場合は
  人名/地名)にします。

Q【VB.NET2003】フォーム1を閉じてフォーム2を表示させたい

プログラミング初心者でVB.NET2003使用です。
検索したところ、それらしいものがあったのでチャレンジしましたがダメだった(ちょっと違う?)ので質問させていただきます。
http://oshiete1.goo.ne.jp/qa1757174.html

《やりたい事》
Form1に配置したボタン1をクリックするとForm1を閉じてForm2を表示
Form2に配置したボタンAをクリックするとForm2を閉じてForm1を表示する。

これをやりたいのですが、なかなかうまく行きません。

ボタン1をクリックしてForm1を閉じないでForm2をShowかShowDialogでモードレス表示
ボタンAをクリックしてForm2をCloseさせてForm1を表示させる事(元々閉じていないので)は出来ます。

可能ならばどちらかを必ず閉じる方法でやりたいと思います。
可能でしょうか?
解決策やヒント、良いサイトがありましたら回答をお願いします。

Aベストアンサー

Sub Mainでやるのは #1と同じですが オブジェクト『フォーム』の管理をModule1でやってみてはいかがですか

Module1に
  Dim oForm1 as Form1
  Dim oForm2 as Form2
  Sub Main
    ' Form1を表示
    oForm1 = new Form1
    oForm1.Show()
    Do While TRUE
      if oForm1.IsDisposed then
        ' Form1が閉じられた場合
        if oForm2 is Nothing then
          ' Form2が一度も表示されなかった場合
          Exit Sub
        else if oForm2.IsDisposed then
          ' Form2が1回以上表示された場合
          Exit Sub
        end if
      end if
      Application.DoEvents()
    Loop
  End Sub

フォーム1上のボタンイベント
if oForm2 is Notrhing OrElse oForm2.isDisposed then
  oForm2 = new Form2
end if
oForm2.Show()
me.Close()

フォーム2上のボタンイベント
if oForm1 is Notrhing OrElse oForm1.isDisposed then
  oForm1 = new Form1
end if
oForm1.Show()
me.Close()

といった具合で …

Sub Mainでやるのは #1と同じですが オブジェクト『フォーム』の管理をModule1でやってみてはいかがですか

Module1に
  Dim oForm1 as Form1
  Dim oForm2 as Form2
  Sub Main
    ' Form1を表示
    oForm1 = new Form1
    oForm1.Show()
    Do While TRUE
      if oForm1.IsDisposed then
        ' Form1が閉じられた場合
        if oForm2 is Nothing then
          ' Form2が一度も表示されなかった場合
          Ex...続きを読む

QAccess フォームのテキストボックスに半角英字のみで入力する設定は

IME入力モードをテーブル・フォームともオフにしたのですがひらがな入力モードになってしまいます。
フォームのテキストボックスに半角英字のみで入力する設定としてプロパティのIME入力モードをオフにするやり方自体が間違っているのでしょうか。
それともATOKを使っているなど利用するパソコン側の問題でしょうか

Aベストアンサー

IME入力モードを「使用不可」にしましょう。

QVB2010で、2つめのフォームを表示させると、フォームを閉じるまで1

VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1つめのフォームの操作ができないのですが、どなたか解決方法を御存じないでしょうか。
よろしくお願いします。

Form1のピクチャーボックスに描いた折れ線グラフ上のカーソル(Form11)が、
マウスの動きに合わせてグラフ線上をたどっていくようにしようとしています。


【Form1のボタンを押すと2つめのフォームを呼び出す】
Dim Mark As New Form11
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'グラフカーソル表示
Mark.Show()

【呼び出されたフォームのコード】
Imports System.Drawing
Public Class Form11
Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
'フォームのクライアント領域のサイズを設定
Me.ClientSize = New System.Drawing.Size(20, 20)

'カーソルを描く
Dim MarkPen As New Pen(Color.Red, 1)
Dim g As Graphics = e.Graphics
g.DrawEllipse(MarkPen, 0, 0, 20, 20) '円の描画
Me.TopMost = True '最全面
Me.TransparencyKey = Me.BackColor '透明色の設定
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None '枠なし
End Sub
End Class

VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1つめのフォームの操作ができないのですが、どなたか解決方法を御存じないでしょうか。
よろしくお願いします。

Form1のピクチャーボックスに描いた折れ線グラフ上のカーソル(Form11)が、
マウスの動きに合わせてグラフ線上をたどっていくようにしようとしています。


【Form1のボタンを押すと2つめのフォームを呼び出す】
Dim Mark As New Form11
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.Even...続きを読む

Aベストアンサー

おかしいですね 当方は VB2008/2005ですが実現できていますよ

追加したPictureBoxの親の指示が違っていませんか?
通常ツールボックスからフォーム上にピクチャーボックスをドラッグアンドドロップした場合は
親がフォームになります
つまり ピクチャーボックス同士は兄弟という関係です

この場合重ね合わせても 兄弟を透過することは出来ませんので親(Form)の背景を描画してしまいます

フォームを作成して BackCOlor適当にColor.Controlから Color.Redや Color.Greenなどに変更しておきます
この状態で PictureBoxを追加してBorderStyleをFixedSingleなどにしてからBackColorを Color.Transparentに変更してみてください
デザイナ画面でPictureBoxの枠線だけの描画になると思います

ここまで出来れば先の回答の方法でうまくいくと思うのですが ・・・

添付の画像は フォームにPictureBoxを2個追加してBackColorを変更した状態ですよ
緑色のPictureBoxの中の 赤色が2番目のPictureBoxで BackColorをTransparentに設定したものです

おかしいですね 当方は VB2008/2005ですが実現できていますよ

追加したPictureBoxの親の指示が違っていませんか?
通常ツールボックスからフォーム上にピクチャーボックスをドラッグアンドドロップした場合は
親がフォームになります
つまり ピクチャーボックス同士は兄弟という関係です

この場合重ね合わせても 兄弟を透過することは出来ませんので親(Form)の背景を描画してしまいます

フォームを作成して BackCOlor適当にColor.Controlから Color.Redや Color.Greenなどに変更しておきます
この状態で Pictur...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報