掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームが一緒に閉じられてしまうのを回避するには?【.NET】 (ID:116599)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
…ああ、本来の『Windows フォーム デザイナで生成されたコード』 を消しちゃったんですね。…しかしそれだと Button1.Click とかも エラーになるはずですが…。なんか、こう…また基本が分かってない とか言われちゃうかも?ですねぇ。何が問題ってたくさん説明しなきゃ いけない事が(ボクにとってw)問題です。しかし途中で止められると …質問者はそれで満足なんでしょうが、今後、過去ログ検索で利用する 人が困るんですよ。質問の上級者(プログラミング上級者ではない)は、 自分の質問や回答が、後から技術情報を検索したい人に理解しやすい 形になるよう努力します。 多分、分からない言葉がたくさん出てくるでしょうが、基本的な( ヘルプに載ってる)レベルの事ですので色々勉強して下さい。解説は 中級者が常識として理解できてるレベルに省略させてもらいます。 書籍[VB.NET入門]とかに書いてあるレベルなので、ボクの中では [VB.NET]プログラマ初心者レベルの話ですが…。…本心は『入門』 できてないんだから初心者にもなってないでしょ?とか思ってます。 そんな質問はするべきでないと思ってます。入門本1冊読むか セミナー受ければ分かる事を、回答者から時間を奪って説明させてる わけだから『冗談じゃない』と思ってます。これ書くのに1時間 …時給1,000円くらいの損害を与えられてます…お昼ご飯食べれません でした。でも管理人さんに削除依頼を出すほどではないと思ってますw。 …でも怒ります。 そのくらいはいいでしょ?労力使ってるんだから。公開した コードの内容はちょっと高めで、π さんの質問のレベルは ちょっと低めです。怒られる事は覚悟の上で質問して下さい。 怒られるのが嫌なら入門レベルの実力をどっかでつけてきて下さい。 ここで回答者を使って実力アップする気なら、怒られても文句 言わないで努力して下さい。(←π さんは多少引っ掛かりつつも できてると思います。これを読んだ他の質問者向けです) 怒るくらいなら回答するな?…解決率が低くなっちゃうじゃ ナイデスカw…『回答するな!』ってゆーならそれ以前に 『質問するな!』と言いたい…言いたいが…初心者掲示板と いう事でそこまでは言わない…よう努力します...( _)_ぱたり 公開したコードの > Friend Sub New(ByRef ParentClass As Class1) は[Windows フォーム デザイナ]によって自動的にコーディング される Public Sub New() のオーバーロード(引数が違うだけで同じ名称の関数)です。 まず、[ソリューション]に新規フォームを追加し、[Windows フォーム デザイナ]の画面(デザイン画面)で追加した新規 フォームにボタンを1個貼り付けて下さい。 追加した新規フォームのコードを表示すると半透明で四角で 囲まれた[ Windows フォーム デザイナで生成されたコード ] というのが見えると思います。クリックして展開して下さい。 >#Region " Windows フォーム デザイナで生成されたコード " > 〜いろんなコード〜 >#End Region になったと思いますが、最初の方に Public Sub New() があると思います。親クラス(公開したコードの Class1)とかで > Dim Form1_form As New Form1 > ↓同じ意味 > Dim Form1_form As Form1 > Form1_form = New Form1 とやった時に呼び出される New はこれの事です。 >#Region " Windows フォーム デザイナで生成されたコード " > 〜いろんなコード〜 >#End Region の[〜いろんなコード〜]にざっと目を通して見て下さい。フォームの プロパティやボタンのプロパティ、コントロールの追加などの 重要なコードが書かれていますね?。 > ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。 > 'Windows フォーム デザイナを使って変更してください。 > ' コード エディタを使って変更しないでください。 という記述もあります。『これは意味が分からない人は触るな!』と いう意味で『ここを変更するとデザイナが見れなくなったり、フォームが New 出来なくなったりします。』という意味です。変更しないで下さい。 エラーが出ていると言われた > Me.New() は本来の New を呼び出して、フォームを実体化するのに必要な本来の 処理をやってもらってるわけです。ところが削除されてしまった為に 他に New という関数が無いか探します。 > Friend Sub New(ByRef ParentClass As Class1) が見つかります。これは引数を必要とします。公開したコードの Class1 で > Me.Form1_form = New Form1(Me) という風に使ってます。この Me は Class1 で使ってるので Class1 の 実体(特定のインスタンス)を指します(参照します)。引数を必要とする New なので↓のエラーメッセージが出ます。 >New()のところにアンダーラインが入ってしまって引数にParentClassを指定してくださいとメッセージがでてしまうんです・・。 これは >クラス内のMeが使えなかった ではありませんでした。違いが理解できたでしょうか?間違った解釈 を説明された場合、当然正しい回答はできません。エラーメッセージは ほぼ正しい解釈につながるものです。ぶっちゃけコレが回答なんですが… まぁ、機械の判断することなので直接の原因を指してなかったり、微妙に 間違ってたりします。回答者はまずこの[エラーメッセージの翻訳]を します。今後、質問時にエラーメッセージが出てる時は必ず書いて下さい。 >ご回答して下さった方々のコードを頂き、ただ単に貼り付けて、思ったような >プログラムができた!そんな次元で満足しているわけでは決してありません! ボクが公開したコードも理解して、必要な部分だけコピーして貼り付けて下さい。 >'///////////////////////// >Option Explicit On >'///////////////////////// >'/// Form1.vb >'///////////////////////// の Form1.vb の部分はファイル名です。デフォルトで作成した時の ファイル名にしてありますのでファイルをデフォルト設定で作成し、 自動で作成されたコードと見比べ、足りない部分だけ追加して下さい。 コードを削除したり、上書きしたりしないよう気をつけて貼り付けて 下さい。デフォルトでこのファイル名にならない場合は、何か間違って 設定してないかチェックです。 あ、余談ですが、このサンプルコードで本来の New を使って フォームを実体化すると親クラスの参照が Nothing でエラーに なるので本来の New を Public Sub New() ↓ Private Sub New() に変える…もしくは親クラスの参照でエラー処理を入れるよう改良 するのが中級者レベル…。 >またFriend Sub というのも初めて見たので、その使い方がわかりました! そこのオマケ要素に気付いて調べているのは大変いい事だと思います。 意味が正しく調べられたのなら『スコープを意識しての事ですよね?』 とかレスを付けると回答者の機嫌が良くなりますw。『Protected でも 良いのかと思い調べましたがここでは使えない事が分かりました』…とかね。 『トグルって国語辞典に載ってました』…とか? 『調べました』なんてのは調べてなくても言えます。調べてても調べ方が 悪かったら意味無いんです。評価をしない事もないですが、低いです。 逆に回答者が『頑張って調べましたが丸っきり理解できてないです』と いった回答を付けたら評価してくれます?しないでしょ?(^^;) 調べたなら『理解度』がこちらに伝わるレスを付けて下さい。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.