Discussion:
Windowsアプリの最初に開かれたFormについて
(too old to reply)
ぴの
2005-07-06 15:09:08 UTC
Permalink
次の画面へ移動しようとして、アプリケーションの最初のFormを閉じると、アプリケーション全体が終了してしまいます。
一般的にどうやって画面の移動をするものなのでしょうか?
最初に開いた画面を開いた状態にし続けるのでしょうか?
うまくヘルプなどが探せずに申し訳ないのですが、よろしくお願いいたします。
Takahashi Masahiro
2005-07-06 15:42:57 UTC
Permalink
$B9b66$G$9(B

"$B$T$N(B" wrote in message
$B<!$N2hLL$X0\F0$7$h$&$H$7$F!"%"%W%j%1!<%7%g%s$N:G=i$N(BForm$B$rJD$8$k$H!"(B
$B%"%W%j%1!<%7%g%sA4BN$,=*N;$7$F$7$^$$$^$9!#(B
$B0lHLE*$K$I$&$d$C$F2hLL$N0\F0$r$9$k$b$N$J$N$G$7$g$&$+!)(B
$B:G=i$K3+$$$?2hLL$r3+$$$?>uBV$K$7B3$1$k$N$G$7$g$&$+!)(B
$B%W%m%8%'%/%H$N%W%m%Q%F%#$***@_Dj$G%9%?!<%H%"%C%W$r(B Form1$B$J$I$N(B
$B%U%)!<%`$K$7$F$$$k$N$G$"$l$P(B
Form1$B$+$iJL$N%U%)!<%`$KA+0\$9$k>l9g(B Form1$B$O(BHide$B%a%=%C%I$G(B
$BHsI=<($K$9$k$@$1$K$7$^$9(B
$B$3$N>l9g(B Form1$B$N:FI=<(MQ$K(B $BA+0\B&$N%U%)!<%`$J$I$K(B Form1$B$N(B
$B%*%V%8%'%/%HJQ?t$rMQ0U$7$F$*$-$^$7$g$&(B

$BJL$NJ}K!$H$7$F$O(B
$BI8=`%b%8%e!<%k$rMQ0U$7$F(B $B$3$l$K(B Sub Main $B%W%m%7!<%8%c$r=`Hw$7$^$9(B
$B$3$N(B Sub Main $B$+$i(B $B:G=i$N%U%)!<%`$r8F$S=P$9$h$&$K$7$F(B
$B=*N;>r7o$,@_Dj$5$l$?$i(B Sub Main $B$rH4$1$k$h$&$K$7$F$_$^$7$g$&(B

$B$?$H$($P(B

Module Module1
Public bFlag as Boolean
Sub Main()
dim oForm as New Form1()
oForm.Show()
do until bFlag
Application.DoEvents()
loop
End Sub
End Module

$B$H$$$C$?6q9g$K$7$F$*$-$^$9(B
Module1.bFlag$B$,(B True$B$***@_Dj$5$l$l$P%"%W%j%1!<%7%g%s$,=*N;$7$^$9(B
--
$B9b66@/9((B ***@yahoo.co.jp
Microsoft MVP Visual C++
$BJV?.$O!X%0%k!<%W$XJV?.!Y$G(B ...
unknown
2005-07-06 16:02:01 UTC
Permalink
高橋様 ご返信ありがとうございます。
プロジェクトのプロパティの設定でスタートアップを Form1などの
フォームにしているのであれば
Form1から別のフォームに遷移する場合 Form1はHideメソッドで
非表示にするだけにします
Hideメソッドですね。
この場合 Form1の再表示用に 遷移側のフォームなどに Form1の
オブジェクト変数を用意しておきましょう
Form1のオブジェクト変数というのが、まだぴんときていませんが、
明日さっそく試みてみます。
自分を開いたFormが取得できるのかもしれませんね。

ありがとうございます。
unknown
2005-07-08 02:53:05 UTC
Permalink
高橋様
プロジェクトのプロパティの設定でスタートアップを Form1などの
フォームにしているのであれば
Form1から別のフォームに遷移する場合 Form1はHideメソッドで
非表示にするだけにします
この場合 Form1の再表示用に 遷移側のフォームなどに Form1の
オブジェクト変数を用意しておきましょう
遷移側のフォームにForm1のオブジェクト変数を用意する、
方法がわかりません。
よろしければ教えていただけますか?
基本的なことをお聞きして申し訳ありません。
よろしくお願いいたします。
unknown
2005-07-08 03:07:01 UTC
Permalink
以下は、無理やりやってみた方法です。

//次のフォームを呼ぶボタンのイベント
private void button1_Click(object sender, System.EventArgs e)
{
System.Windows.Forms.Form frmNext = new Form2();
//自分を次のフォームのTagに設定する・・・(ありえない・・・)
frmNext.Tag = this;
frmNext.Show();

//これでは終わってしまう。
//this.Close();

//隠してみよう。・・・ただ隠すだけでは戻れない!
this.Hide();
}

//戻るボタンのイベント
private void button1_Click(object sender, System.EventArgs e)
{
objParentForm = (System.Windows.Forms.Form)this.Tag;
objParentForm.Show();

this.Close();
}

2番目のフォームにパブリックのオブジェクトを用意したのですが、
最初のフォームからアクセス(設定?)できずに、
むりやり参照できたTagプロパティに設定してしまいました。
ありえませんよね。。
すみません。
Takahashi Masahiro
2005-07-08 17:00:27 UTC
Permalink
$B9b66$G$9(B
"$B$T$N(B" wrote in message

Tag$B%W%m%Q%F%#$J$I$G$O$J$/(B Public$BJQ?t$J$I$GMQ0U$9$k$H$$$&0UL#$G$9(B

Public Class Form2 : System.Windows.Forms.Form
Public From1 oForm;
'
End Class

$B$H$$$C$?6q9g$GMQ0U$7$F$*$$$F(B

Form2$B$X$NA+0\%$%Y%s%H$G(B
Form2 NextForm = new Form2();
NextForm.oForm = this;
this.Hide();
$B$H$$$C$?6q9g$K$7$^$9(B

Form2$B$+$i(B Form1$B$XLa$k:]$K$O(B
oForm.Show();
this.Close();
$B$H$$$C$?6q9g$K$7$^$9(B

Form2$B$N(B $BJD$8$k%\%?%s$J$I$G%"%W%j%1!<%7%g%s$r=*N;$5$;$F$bNI$$$N$G$"$l$P(B
Closed$B%$%Y%s%H$G(B
oForm.Close();
$B$r<B9T$7$^$7$g$&(B

$***@h$NEj9F$G(B $BI8=`%b%8%e!<%k1>!9$H$$$C$?ItJ,$O(B VB.NET$B$N>l9g$G$7$?(B
CS.NET$B$G$9$H!!%/%i%9%b%8%e!<%k$K(B
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
$B$N$h$&$J5-=R$r$7$F(B

$B%=%j%e!<%7%g%s%(%/%9%W%m!<%i$G%W%m%8%'%/%HL>$rA*Br$7$F(B
$B%W%m%8%'%/%H(B > $B%W%m%Q%F%#(B $B$N(B
$B6&DL%W%m%Q%F%#(B > $BA4HL(B $B$N(B $B%9%?!<%H%"%C%W(B $B%*%V%8%'%/%H(B $B$N%I%m%C%W%@%&%s%j%9%H$G(B
$B%/%i%9%b%8%e!<%k$rA*Br$7$F$_$^$7$g$&(B
--
$B9b66@/9((B ***@yahoo.co.jp
Microsoft MVP Visual C++
$BJV?.$O!X%0%k!<%W$XJV?.!Y$G(B ...
Takahashi Masahiro
2005-07-08 17:16:46 UTC
Permalink
$B9b66$G$9(B

"Takahashi Masahiro" <***@yahoo.co.jp> wrote in message news:O7%***@TK2MSFTNGP09.phx.gbl

$B=q$-K:$l$,$"$j$^$7$?(B m(__)m

Closed$B%$%Y%s%H$rJ;MQ$9$k>l9g(B Form1$B$XLa$k%$%Y%s%H$H6hJL$9$k%U%i%0$,$"$C$?$[$&$,NI$$$G$9$M(B
Private$B!!(BBoolean bFlagReturn;
$B$J$I$H$$$C$?$b$N$r=`Hw$7$F(B

Form2$B$+$i(B Form1$B$XLa$k:]$K$O(B
oForm.Show();
bFlagReturn = True;
this.Close();
$B$H$$$C$?6q9g$K$7$^$9(B

Form2$B$N(B $BJD$8$k%\%?%s$J$I$G%"%W%j%1!<%7%g%s$r=*N;$5$;$F$bNI$$$N$G$"$l$P(B
Closed$B%$%Y%s%H$G(B
if ( !bFlagReturn )
oForm.Close();
$B$r<B9T$7$^$7$g$&(B
--
$B9b66@/9((B ***@yahoo.co.jp
Microsoft MVP Visual C++
$BJV?.$O!X%0%k!<%W$XJV?.!Y$G(B ...
unknown
2005-07-28 16:09:02 UTC
Permalink
高橋様 
大変遅くなってしまいましたが、その節はお世話になりまして
ありがとうございます。
Form2への遷移イベントで
Form2 NextForm = new Form2();
NextForm.oForm = this;
this.Hide();
といった具合にします
どうして間違っていたかと言うと、
Form2 NextForm = new Form2();
を 、Form2ではなく、Formという型?で宣言していました。
→ Form NextForm = new Form2();

独自のフィールドを参照(設定)できるはずもあありませんよね。
フォームもクラスであることを実感いたしました。

ありがとうございましたm(__)m

Loading...