iniファイルの内容を読み込んで表示・書き換え・再表示をする
ミニプログラムを作っています。

(1)Form1でiniファイルの内容をForm1.textに表示させる。
(2)Com1でForm2に遷移。
(3)Form2.textに書き換え内容を入力、Com2で書き換え、Form1に遷移。

Form1.textには書き換えられた内容が表示されている…という結果を出したいのですが、
Com1に
   Form2.show
   Form1.hide
と書いていた為、値の再表示が出来ませんでした。
そこで
   Unload Form1
   Form2.show
と書いてみると、プログラムが終わってしまいました・・・。
順序を逆にしても同じ結果です。

Form1.textだけ、もしくはForm1全体を
プログラムを終了させることなくunloadする方法がありましたら
教えてください。

A 回答 (3件)

vbMoval は vbModalの間違いです。



Form2.Show vbModal

と書くと、Form1は終了したり非表示になったりはしませんが、Form2を閉じるまでは、Form1を触ってもまったく反応しないようになります。

Form2.show
Form1.hide

と書いても、それ以降のコードは実行されますよ。

Form2.show
Unload Form1

と書くと、それ以降のコードは実行されません。
が、Form2が先にロードされるのでプログラムが終了することはありません。
これでももし終了してしまうとしたら、Form_UnloadイベントにEndステートメントが記述されていないか確かめてください。

もしくは、Form2のForm_Loadイベントで

Unload Form1

を書く手段もあります。
ちなみに、テキストボックスなどの最初から配置されているコントロールだけをアンロードする方法はありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘の通り、Form1のUnload(QueryUnload)イベントにEndを記述していました。
このせいでプログラムが終了してしまったのですか?
これを消して
   Form2.show
   Unload Form1
としたところ、やりたかった結果が出ました。

ちなみにForm2のForm_Loadイベントに Unload Form1 …という方法も
試したのですが、値の再表示が出来ませんでした。
後でまた書く位置などを変えて試してみます。

色々ていねいにありがとうございました。
また機会がありましたら教えてください(ペコリ)。

お礼日時:2002/01/23 12:07

lovelypoohさんこんにちは。



まずzerosixさんの回答の補足なのですが、

これは、
call FormXXX.show(vbMoval)
ではなく、
call FormXXX.show(vbModal)
が正解です。(これはShowメソッドを調べると載ってます)

vbModalをつけると、
呼び出し元のフォ-ムは呼び出したフォ-ムを閉じないとつつけなくなります。
もし、Form1からForm2を呼び出した際にForm1を非表示にする必要がないなら、
Call Form2.show(vbModal)
で、Form2を表示し、Form2をUnloadするタイミングで、
変更内容をForm1に書き出せば、やりたいことは実現するのではないでしょうか。
    • good
    • 0
この回答へのお礼

vbModalの説明、ありがとうございます。
ややこしくしないためにFormは常に1枚だけ表示を・・・、と考えていたのですが
これを使えば問題なしってことですよね。
画面がパコパコ動くよりも、こっちの方が親切に思えます。

Form2で変更したiniファイルの内容をForm1で読み込み直す・・・というのが
どうしてもできなかったので(Unloadのタイミングが悪いのか、プログラムが終了するのです…)
saruruさんのアドバイス通り、Form2をhideする際に変更内容をForm1に直で書き出すようにしました。
何だかいい感じに動いております。

ありがとうございました。
また機会がありましたら教えてやってください(ペコリ)。

お礼日時:2002/01/23 14:00

ちょっとあまり考えてませんが、


call FormXXX.show(vbMoval)
と記述してやってみてください。どうでしょうか?

この回答への補足

早速の回答ありがとうございます。
すみません、この記述はどこに書くのでしょうか?
Com1に
   call Form1.show(vbMoval)
と書いてみましたところ、変数が宣言されていないとのことで
とりあえず
   Dim vbMoval
とだけ書いて実行したところ、エラーは出ませんでしたが
Form1が表示されたままForm2が出て、変更後もForm1.textは変わっていませんでした。

このcall Form1.show(vbMoval)とはどんな役目をするのですか?
vbMovalって何ですか?(ヘルプでは該当なしと出ました)
何分素人なもので…。
よろしければまた教えてください。

補足日時:2002/01/23 11:18
    • good
    • 0

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

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

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

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
という具合にする方法もありますよ。

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

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

Aベストアンサー

Form2.Show vbModal

でOKです。

QFOR文でtext1,text2,text3...などとどうやって処理させればいいのですか

超初心者な質問ですみません。
たとえばFOR文を使ってtext1~10まで連続に処理させるには
どういったコードを記述すればよいのでしょうか?
初心者用の本やHPを探しても見当たりませんでした。
お願いします。

Aベストアンサー

textエリアをインデックス配列にすればいいです。
Text1のエリアをファーム上でコピーし、貼り付けると
Text1(0)~ Text1(9) の配列になります。
それを
 
(例)

i =0
for i=0 to 9
text1(i) = x
next

のようにすればいいです。

Qボタンをクリックした時にForm1のTextプロパティに値を代入する方法

ボタンをクリックした時に
Form1のTextプロパティに値を代入する方法
が不明です
form1.text=”sample”
とVB6では出来たと思ったのですが、
.netではどうなるのでしょうか?

Aベストアンサー

VB6と.NETでは、画面の表示方法が多少異なっているのはご存知だとは思いますが、、、

VB6では[Form1]は、オブジェクト自体となりますが、.NETではクラスを指し、オブジェクト変数に派生させ使いまわします。

※外部から画面を起動して、キャプションを設定する場合
Dim l_frm As New Form1()
l_frm.Show()
l_frm.Text = "sample"

※画面内部から、キャプションを設定する場合
Me.Text = "sample"

QForm2.Show

Form2.Showがなぜか出来ません。

(.netです)

リファレンスをみてもいけるようなことがかいてあるのですが・・・。

Aベストアンサー

たとえば form1 から form2を開きたいときは

dim frm2 as new form2
frm2.show

でいけると思います
いま環境が無いのでうる覚えですが・・・


このカテゴリの人気Q&Aランキング

おすすめ情報