C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.13058 の関連記事表示

<< 0 >>
■13058  C#フォームに関して
□投稿者/ はやし -(2008/01/23(Wed) 23:46:58)

    分類:[C#] 

    初歩的なことかもしれませんが、本やネットで調べたのですが結局わからなっかたので書き込みします。
    どなかたわかる方がいましたら、お手数かもしれませんがご教授お願いします。

    内容は、C#のフォームに関することで
    「form2においてform1のtextboxのtextが使えるか?」です。

    もう一つ質問がありまして
    「普通は初回起動時はform2が表示するようになると思うのですが、最初からform2を表示する
    方法があるのか?」です。

    わかる方いましたらお願いします。
親記事 /過去ログ28より / 関連記事表示
削除チェック/

■13060  Re[1]: C#フォームに関して
□投稿者/ Azulean -(2008/01/23(Wed) 23:59:19)
    > 内容は、C#のフォームに関することで
    > 「form2においてform1のtextboxのtextが使えるか?」です。
    Form2がForm1の参照を持っていれば可能です。
    TextBoxはModifiersプロパティあたりで調整が必要かもしれません。

    > もう一つ質問がありまして
    > 「普通は初回起動時はform2が表示するようになると思うのですが、最初からform2を表示する
    > 方法があるのか?」です。
    「初回起動時はform1」の間違いでしょうか?
    そのプロジェクトにProgram.csというものがありますので、どうしてForm1が最初に表示されるかを見てみてください。
    それが理解できればForm2を最初に表示することは十分可能です。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13059  Re[1]: C#フォームに関して
□投稿者/ やじゅ -(2008/01/23(Wed) 23:56:53)
>
    2008/01/24(Thu) 01:03:39 編集(投稿者)
    2008/01/24(Thu) 00:03:32 編集(投稿者)

    No13058 (はやし さん) に返信
    > 「form2においてform1のtextboxのtextが使えるか?」です。

    使える。
    http://www.geocities.jp/hatanero/form1andform2.html

    > 「普通は初回起動時はform1が表示するようになると思うのですが、最初からform2を表示する
    > 方法があるのか?」です。

    方法 : Windows アプリケーションでスタートアップ フォームを選択する
    http://msdn2.microsoft.com/ja-jp/library/a2whfskf(VS.80).aspx
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13062  Re[2]: C#フォームに関して
□投稿者/ はやし -(2008/01/24(Thu) 00:25:59)

    「普通は初回起動時はform1が表示するようになると思うのですが、最初からform2を表示する
     方法があるのか?」です。
    の間違いでした。
    失礼いたしました。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13067  Re[3]: C#フォームに関して
□投稿者/ 七曜 -(2008/01/24(Thu) 01:25:23)
    No13062 (はやし さん) に返信
    > 
    > 「普通は初回起動時はform1が表示するようになると思うのですが、最初からform2を表示する
    >  方法があるのか?」です。
    > の間違いでした。
    > 失礼いたしました。
    
    ん〜form1を経由する必要がなければ・・・
    namespace DataSetMergeSample
    {
        static class Program
        {
            /// <summary>
            /// アプリケーションのメイン エントリ ポイントです。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    
    のApplication.Run(new Form1());のForm1をForm2にすれば・・・と思ったりして。意図と違いますかね。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13068  Re[4]: C#フォームに関して
□投稿者/ はやし -(2008/01/24(Thu) 01:44:52)
    やじゅさん、Azuleanさん、七曜さん教えていただきありがとうございます。

    2番目の方は解決しました。こんなに簡単だったんですね。

    1番目の方はまだちょっと実現できていない状態です。
    1番目の具体的内容なのですが、form2ではtextboxは作らないので、
    form1にあるtextboxに入力された内容をform2においてその内容を
    利用したいということです。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13069  Re[5]: C#フォームに関して
□投稿者/ やじゅ -(2008/01/24(Thu) 01:59:17)
>
    No13068 (はやし さん) に返信
    > 1番目の方はまだちょっと実現できていない状態です。
    > 1番目の具体的内容なのですが、form2ではtextboxは作らないので、
    > form1にあるtextboxに入力された内容をform2においてその内容を
    > 利用したいということです。

    提示したリンク先を見て、その上で何がわからないのか
    しめしてもらわないと。
    答えを書くのは簡単だけど、考えさせるのも大切だしね。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13070  Re[6]: C#フォームに関して
□投稿者/ 七曜 -(2008/01/24(Thu) 02:26:24)
    2008/01/24(Thu) 02:30:31 編集(投稿者)

    No13069 (やじゅ さん) に返信
    > 答えを書くのは簡単だけど、考えさせるのも大切だしね。

    まぁ、その通りではあるのですが、示してあるリンクってVBでの話だったり・・・分類はC#なのでC#での例を示しているなら・・・と思ったり。
    (言語仕様の違いを吸収というか推測できるのが、当たり前ではないのですよね。)

    で、しかも示されている例(http://www.geocities.jp/hatanero/form1andform2.html)は、
    VS2005(C#)でWindow アプリケーション プロジェクト テンプレートを使用して、
    Windows フォームデザイナでTextBoxを配置した場合、Form1.Designer.csでprivateで宣言されるので、
    あの通りには行かない様な気がしますが・・・。
    (まぁ、TextBoxのModifersをpublicにすればいいわけですけどね。)
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13073  Re[7]: C#フォームに関して
□投稿者/ はやし -(2008/01/24(Thu) 03:12:10)
    form1のtextbox1のModefersをpublicにして
    form1のロードイベントに

         Form2 child = new Form2(); // 子フォームの生成
    child.pointer = this; // 子フォーム内から親フォームを参照するためのポインターを指定

    を入力しました。
    次にform2でまず

    public partial class Form2 : Form
    {
    public Form1 pointer ; // 親フォーム参照のためのポインタ

    を入力し,form2のロードイベントに

    string url = pointer.textBox1.Text;

    とやったのですがうまく動作しません。
    何か間違えている箇所があるでしょうか?
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13074  Re[8]: C#フォームに関して
□投稿者/ 七曜 -(2008/01/24(Thu) 03:33:48)
    No13073 (はやし さん) に返信
    > form1のtextbox1のModefersをpublicにして
    > form1のロードイベントに
    >
    >      Form2 child = new Form2(); // 子フォームの生成
    > child.pointer = this; // 子フォーム内から親フォームを参照するためのポインターを指定
    >
    > を入力しました。
    > 次にform2でまず
    >
    > public partial class Form2 : Form
    > {
    > public Form1 pointer ; // 親フォーム参照のためのポインタ
    >
    > を入力し,form2のロードイベントに
    >
    > string url = pointer.textBox1.Text;
    >
    > とやったのですがうまく動作しません。
    > 何か間違えている箇所があるでしょうか?

    さて・・・部分コードなのでどこがうまくいってないのかは推測になりますが
    (1)Form.Load イベントは、フォームが初めて表示される直前に発生します。
    [Form.Load イベント]
      http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.load.aspx
      つまり、どこかでForm2のShowメソッドを実行してないと駄目ですね。
    (2)urlを他のイベントかメソッドで使用しようとしている。
    form2のロードイベントに・・・とあるので、そのイベントハンドラ以外ではurlは見れませんね。
    (3)Form1.textBox1.Textは、そもそも空かも・・・
      form2で参照する前にTextプロパティに何か設定されていますか。

    ちなみに、Form.Showメソッドに親フォーム(というかウィンドウハンドル)を渡すと、Form.Ownerプロパティで参照出来るので
    > public Form1 pointer ; // 親フォーム参照のためのポインタ
    これは不要でしょうね。(キャストは必要になりますが。)

    ブレークポイントを適宜入れて、動作を追ってみては如何でしょうか。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13120  Re[7]: C#フォームに関して
□投稿者/ やじゅ -(2008/01/24(Thu) 19:49:06)
    No13070 (七曜 さん) に返信
    > 2008/01/24(Thu) 02:30:31 編集(投稿者)
    >
    > ■No13069 (やじゅ さん) に返信
    >>答えを書くのは簡単だけど、考えさせるのも大切だしね。
    >
    > まぁ、その通りではあるのですが、示してあるリンクってVBでの話だったり・・・分類はC#なのでC#での例を示しているなら・・・と思ったり。
    > (言語仕様の違いを吸収というか推測できるのが、当たり前ではないのですよね。)
    >

    言語が違うのは認識してたんですが、ヒントを出したんだから、そこから、さらに追っていってもらえるかなと
    あわい期待をしているわけです。不親切といえば不親切でしたかね。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/

■13152  Re[8]: C#フォームに関して
□投稿者/ Hirotow -(2008/01/25(Fri) 01:22:27)
    まあ方法はいろいろあるけど、
    スマートな実装としてはForm2でテキストボックスのTextを文字列型のプロパティとして公開して、
    string Text1
    {
        get{ return textBox1.Text; }
        set{ textBox1.Text = value; }
    }
    
    textbox1のTextChangedに対応するイベントを追加
    public event EventHandler Text1Changed;
    
    //これは別途イベント追加するように
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if(Text1Changed != null)
            Text1Changed(this, EventArgs.Empty);
    }
    
    Form1のメンバ変数としてForm2のインスタンスを保持しておき
    private Form2 form2;
    
    コンストラクタで表示します。
    InitializeConponent();
    form2 = new Form2();
    form2.Text1Changed += new EventHandler(form2_Text1Changed);
    form2.Show();
    
    あとは普通にform2.Text1を参照すればいいだけです。
記事No.13058 のレス /過去ログ28より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -