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

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

C# と VB.NET の入門サイト

Re[6]: タブページ内のテキストボックスへの書き込み


(過去ログ 128 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■75879 / inTopicNo.1)  タブページ内のテキストボックスへの書き込み
  
□投稿者/ ラスカル (1回)-(2015/05/14(Thu) 11:15:54)

分類:[.NET 全般] 

Microsoft Visual Studio Express2012のVBに関して質問なのですが、

 1:ボタンをクリックすると、タブページを作成する
 2:作成したタブページにフローレイアウトパネル(真っ白のパネル)を貼り付ける
 3:プロジェクトからユーザーコントロールを追加し、追加したユーザーコントロールにテキストボックスを貼り付ける
 4:2に3で作成したユーザーコントロールを貼り付ける
 5:タブページに貼り付けられたユーザーコントロール内にあるテキストボックスに値を書き込む

以上のような事をやりたいのですが、最後の"5"の所で、テキストボックスに値を書き込む方法がわかりません。

UserControl1.TextBox1.Text = "文字"
のように書いてみたのですが、何も書き込まれていませんでした。

どのようにコードを記述すれば書き込めるのか、教えて頂けないでしょうか。
よろしくお願いします。
引用返信 編集キー/
■75881 / inTopicNo.2)  Re[1]: タブページ内のテキストボックスへの書き込み
□投稿者/ Amateur (4回)-(2015/05/14(Thu) 11:47:42)
No75879 (ラスカル さん) に返信

現状できているコードを見せたほうがよいかと思います。
引用返信 編集キー/
■75883 / inTopicNo.3)  Re[1]: タブページ内のテキストボックスへの書き込み
□投稿者/ WebSurfer (573回)-(2015/05/14(Thu) 12:11:18)
No75879 (ラスカル さん) に返信

何を作っているのか(Windows フォームアプリ? WPF アプリ? ASP.NET
Web アプリ? その他?)を書いていただけませんか? 

「タブ」というのは Windows フォーム TabControl コントロールのことに
決まってる・・・と言うのかもしれませんが、ASP.NET Web アプリにもタ
ブはあったりします。

回答者のほうで想像して回答して、もし想像が間違ってると、回答が見当
違いになって混乱を招くだけになりかねないので、きちんと書くようお願
いしてます。

あと、もう少し詳しくご自分の環境を書いていただけませんか? 環境と
いうのは、OS, .NET のバージョン、Web アプリなら開発に使っているサ
ーバー、ブラウザの情報などです。
引用返信 編集キー/
■75884 / inTopicNo.4)  Re[2]: タブページ内のテキストボックスへの書き込み
□投稿者/ ラスカル (2回)-(2015/05/14(Thu) 13:30:49)
No75881 (Amateur さん) に返信
ご返答ありがとうございます。
現状のコードなのですが、下記のように記述しています。

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   'タブを作成する
   AddTabPage()

   'ユーザーコントロールのテキストボックスに値を書き込む
      Dim result As New UserControl()
      result.TextBox1.Text = "文字"
    End Sub

   ''' <summary>
    ''' タブページを作成する
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub AddTabPage()
            Dim tabPage As New TabPage()
            tabPage.Text = "TabPage" & (TabControl1.TabPages.Count + 1)
            TabControl1.TabPages.Add(tabPage)
            AddFlowPanel(tabPage)
    End Sub

    ''' <summary>
    ''' フローレイアウトパネルのDockをFillに変更し、タブページに貼り付ける
    ''' </summary>
    ''' <param name="tabPage"></param>
    ''' <remarks></remarks>
    Private Sub AddFlowPanel(ByVal tabPage As TabPage)
        Dim flowPanel As New FlowLayoutPanel()
        flowPanel.Dock = DockStyle.Fill
        tabPage.Controls.Add(flowPanel)
        AddUserControl(flowPanel)
    End Sub

    ''' <summary>
    ''' 作成したユーザーコントロールをフローレイアウトパネルに貼り付ける
    ''' </summary>
    ''' <param name="flowPanel"></param>
    ''' <remarks></remarks>
    Private Sub AddUserControl(ByVal flowPanel As FlowLayoutPanel)
        Dim readResult As New UserControl()
        flowPanel.Controls.Add(readResult)
    End Sub

フォーム上の部品は
■ツールボックスから
 ・Button
 ・TabControl
 ・FlowLayoutPanel
 ・TextBox
■プロジェクトから
 ・UserControl
を使用しています。

お気づきの点等があれば、ご指摘頂けますでしょうか。
よろしくお願いします。

■No75883 (WebSurfer さん) に返信
ご返答ありがとうございます。
情報不足で申し訳ございません。以下、環境内容をまとめました。
■作成したいもの
 ・Windowsフォームアプリ(内容は最初に記載した1〜5です)
■OS
 ・Windows 7
■.Netのバージョン
 ・4.5

また、不足している点がございましたらご指摘頂けますでしょうか。
よろしくお願いします。

引用返信 編集キー/
■75885 / inTopicNo.5)  Re[3]: タブページ内のテキストボックスへの書き込み
□投稿者/ 魔界の仮面弁士 (318回)-(2015/05/14(Thu) 13:52:38)
No75884 (ラスカル さん) に返信
> Private Sub AddTabPage()
>   Dim tabPage As New TabPage()
>   tabPage.Text = "TabPage" & (TabControl1.TabPages.Count + 1)
>   TabControl1.TabPages.Add(tabPage)
>   AddFlowPanel(tabPage)
> End Sub

ここで New された TabPage は、その後、
Me.TabControl1.TabPages に Add されていますよね。

そのため、上記 tabPage 変数のインスタンスは、
End Sub 到達後も、TabControl1 によって管理されることになります。


>   'ユーザーコントロールのテキストボックスに値を書き込む
>   Dim result As New UserControl()
>   result.TextBox1.Text = "文字"
> End Sub

一方、ここで New された UserControl は、その後、
どこからも利用されることなく、End Sub を迎えます。
そのため、このユーザーコントロール(および、その上にある TextBox)の
インスタンスは、Button1_Click の終了と共に消失します。

生成した UserControl は、どこで管理したいのでしょうか?
自フォーム上に載せたいのなら、Me.Controls.Add する必要があるでしょうし、
特定の TabPage に載せたいのなら、その TabPage の Controls に
Add する必要があるでしょう。
引用返信 編集キー/
■75886 / inTopicNo.6)  Re[4]: タブページ内のテキストボックスへの書き込み
□投稿者/ PANG2 (82回)-(2015/05/14(Thu) 14:06:15)
下らない関数化をやめて、ベタで書くと分りやすい。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim tabPage As New TabPage()
    tabPage.Text = "TabPage" & (TabControl1.TabPages.Count + 1)
    TabControl1.TabPages.Add(tabPage)

    Dim flowPanel As New FlowLayoutPanel()
    flowPanel.Dock = DockStyle.Fill
    tabPage.Controls.Add(flowPanel)

    Dim readResult As New UserControl()
    flowPanel.Controls.Add(readResult)

    Dim result As New UserControl()
    result.TextBox1.Text = "文字"
End Sub

>5:タブページに貼り付けられたユーザーコントロール内にあるテキストボックスに値を書き込む

readResult.TextBox1.Text = "文字"

ですよね。

引用返信 編集キー/
■75888 / inTopicNo.7)  Re[3]: タブページ内のテキストボックスへの書き込み
□投稿者/ WebSurfer (574回)-(2015/05/14(Thu) 15:30:57)
No75884 (ラスカル さん) に返信

複数のレスがあると混乱するかもしれませんが・・・

すでに書かれている回答以前の基本的な話として、(1) 変数のスコープと
(2) 参照型と値型の違いを理解されているでしょうか?

アップされたコードを見る限り、理解されてないように思いますが、いか
がですか?

上の (1), (2) の言葉がピンと来ないようでしたら、まずそのあたりを勉
強して知識をつけることをお勧めします。

このあたりは基本のキですので、理解されてないと掲示板では話が通じに
くいので。

引用返信 編集キー/
■75894 / inTopicNo.8)  Re[4]: タブページ内のテキストボックスへの書き込み
□投稿者/ ラスカル (3回)-(2015/05/14(Thu) 18:59:01)
No75885 (魔界の仮面弁士 さん) に返信
ご返答ありがとうございます。
知りたい内容でした。生成したUserControlを管理したい箇所は特定のTabPageで管理をします。
もう一点、教えて頂きたいのですが、特定のTabPage(※TabPage1,TabPage2,TabPage3・・・)の1,2,3の部分を変数にしたいと思っています。
 Dim userControl As New UserControl()
 TabPage(i).Controls.Add(userControl)
のようにしたいのですが、中々思うようにいきません。


■No75886 (PANG2 さn) に返信
ご返答ありがとうございます。
そうですね、いきなり関数化して書かずにベタ書きで考えるべきでした。
ご指摘、ありがとうございます。


■No75888 (WebSurfer さん) に返信
ご返答ありがとうございます。
仰られる通り、理解不足な所があります。
(1)は変数の利用出来る範囲or寿命
(2)は値型がIntegerやDouble等の実データを格納するもの、参照型がFormやコントロール(部品)を格納するもの
といった感じのイメージしかもっていません。

引用返信 編集キー/
■75895 / inTopicNo.9)  Re[5]: タブページ内のテキストボックスへの書き込み
□投稿者/ 魔界の仮面弁士 (321回)-(2015/05/14(Thu) 19:08:03)
No75894 (ラスカル さん) に返信
> 特定のTabPage(※TabPage1,TabPage2,TabPage3・・・)の1,2,3の部分を変数にしたいと思っています。

TabControl1.TabPages に登録してしておけば、
その TabPages のコレクションで管理できませんか?

>  Dim userControl As New UserControl()
>  TabPage(i).Controls.Add(userControl)
> のようにしたいのですが、中々思うようにいきません。
Private tabPages As New List(Of TabPage)()
を用意しておき、
 Dim tabPage As New TabPage()
 tabPages.Add(tabPage)
のようにして割り当てれば、後から tabPages(n) という形でアクセスできます。

もちろん、TabControl1.TabPages への追加も忘れずに。
引用返信 編集キー/
■75897 / inTopicNo.10)  Re[6]: タブページ内のテキストボックスへの書き込み
□投稿者/ ラスカル (4回)-(2015/05/14(Thu) 19:35:41)
No75895 (魔界の仮面弁士 さん) に返信
ご回答ありがとうございます。
コードまでご提示して頂き、助かります。
早速、確認作業を行いたいと思います。

また、この場で恐縮ですが回答を下さった皆様、ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -