none
Form1のデータをForm2で呼び出す方法 RRS feed

  • 質問

  • お世話になります。現在、VB.NET Windowsフォームアプリケーションで編集画面(Form1)と実行画面(Form2)という仕様を目指して制作しているところです。

    Form1からForm2を表示するときは、Form1上のbutton1.clickで表示しています。

    目指している機能は

    ①Form1のPictureBox1に表示している画像ファイルを、Form1上のbutton1.clickでForm2を表示した時にForm2のPictureBox1にも表示する。

    ②Form1のPictureBox1.clickで取得したwavファイルを、Form2のPictureBox1.clickで取得して再生する。

    です。

    ①②のパスの渡し方が分かりません。

    調べがつかなかったのでご教授お願いします。


    2017年10月10日 7:21

回答

  • こんにちは。

    そのまんまな気がしますが、どの辺りが不明なのか具体的に記載したほうが良いと思います。
    タイトルのとおりであれば①も②もパスの渡し方がわからないという話ですか?

    Form1からForm2にパスを渡す口を作れば解決すると思いますが。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
            form2.SetPath("ファイルパスなど");
            form2.Show();
        }
    }
    
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    
        public void SetPath(string path)
        {
    
        }
    }

    • 回答としてマーク 熊テン 2017年10月10日 12:15
    2017年10月10日 7:45
    モデレータ
  • 熊テン さま よろしく。

    こんな感じでは如何ですか?。

    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.PictureBox1.Image = Image.FromFile("C:\Users\UserA\Pictures\SDimage\DSCNnnnn.jpg")
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim form2 As New Form2
            form2.PictureBox1.Image = Me.PictureBox1.Image
            form2.wavFile = "hoge.wav"
            form2.Label1.Text = form2.wavFile form2.Show() End Sub End Class
    Public Class Form2
    
        Public wavFile As String = ""
    
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    End Class



    • 編集済み ShiroYuki_Mot 2017年10月10日 9:38 waveFile 渡し修正
    • 回答としてマーク 熊テン 2017年10月10日 12:15
    2017年10月10日 9:31

すべての返信

  • こんにちは。

    そのまんまな気がしますが、どの辺りが不明なのか具体的に記載したほうが良いと思います。
    タイトルのとおりであれば①も②もパスの渡し方がわからないという話ですか?

    Form1からForm2にパスを渡す口を作れば解決すると思いますが。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            var form2 = new Form2();
            form2.SetPath("ファイルパスなど");
            form2.Show();
        }
    }
    
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
    
        public void SetPath(string path)
        {
    
        }
    }

    • 回答としてマーク 熊テン 2017年10月10日 12:15
    2017年10月10日 7:45
    モデレータ
  • 回答ありがとうございます。

    おっしゃる通り①②のパスの渡し方が分かりません。

    VB.NETでコードはどのようになりますか?

    2017年10月10日 8:35
  • 熊テン さま よろしく。

    こんな感じでは如何ですか?。

    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.PictureBox1.Image = Image.FromFile("C:\Users\UserA\Pictures\SDimage\DSCNnnnn.jpg")
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim form2 As New Form2
            form2.PictureBox1.Image = Me.PictureBox1.Image
            form2.wavFile = "hoge.wav"
            form2.Label1.Text = form2.wavFile form2.Show() End Sub End Class
    Public Class Form2
    
        Public wavFile As String = ""
    
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        End Sub
    End Class



    • 編集済み ShiroYuki_Mot 2017年10月10日 9:38 waveFile 渡し修正
    • 回答としてマーク 熊テン 2017年10月10日 12:15
    2017年10月10日 9:31
  • 回答ありがとうございます。これで試してみたいと思います。ありがとうございました。
    2017年10月10日 12:15
  • 今後、プログラムを進めていく上で、オブジェクト指向の考え方を学習していくことはとても大切なことです。
    フォームは特殊な感じがするかもしれませんが、オブジェクトに過ぎません。以下のページを読み、良く理解されることをお勧めします。

    別のフォームのデータを取得、設定する
    https://dobon.net/vb/dotnet/form/accessanotherformdata.html


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年10月11日 0:13
    モデレータ
  • 回答ありがとうございます。

    拝読します。教えていただきありがとうございました。

    2017年10月11日 4:47
  • 今更ではありますが、言語を限定するのであれば、.NET Framework ではなく、Visual Basic フォーラムに質問するようにしてください。
    .NET Framework フォーラムで扱う以上は、言語に依存しないような質問が好ましいでしょう。
    2017年10月11日 12:46
    モデレータ
  • 教えていただきありがとうございます。

    フォーラムのカテゴリ→『Visual Studio Development』

    カテゴリ『Visual Basic』

    ということで間違いございませんか?

    2017年10月12日 2:04
  • そうですね。

    2017年10月12日 13:59
    モデレータ
  • 熊テン さん、こんにちは。
    フォーラム オペレーターの立花楓です。

    Azulean さんが仰られているとおり、今回のご質問内容は、「.NET Framework 」フォーラムよりも、「Visual Basic」 フォーラムが適していると思いましたので、こちらで移動させていただきました。

    回答が集まりやすくなったり、同様の問題を抱える他のユーザーが閲覧しやすくなったりと、意見交換の場として非常に有意義なものになることをご認識いただけますと幸いです。

    MSDN フォーラム > Visual Studio Development > Visual Basic
    https://social.msdn.microsoft.com/Forums/ja-JP/home?forum=vbgeneralja&filter=alltypes&sort=lastpostdesc

    よろしくお願いいたします。


    MSDN/TechNet Community Support 立花楓


    2017年10月13日 0:35
    モデレータ
  • 立川楓 様

    お世話になります。

    ありがとうございます。お手数おかけします。今後気を付けます。

    2017年10月13日 2:13