-1

以下は私が抱えている問題です。特に一部には ** があります。ImageViewer を開いたときに、「toolStripButton1_Click()」メソッドを呼び出したいと思います。このままでは、ImageViewer を開いたときに、選択した画像が開かれません。メソッドを公開しましたが、それで問題が解決することを願っていますが、公開していません。

public partial class MediaPlayer : Form
{

    public ImageViewer iv;
    public AudioPlayer ap;
    public VideoPlayer vp;

    public MediaPlayer()
    {
        InitializeComponent();
    }

    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (ofdSelectMedia.ShowDialog() == DialogResult.OK)

            switch(ofdSelectMedia.FilterIndex){
                **case 1: new ImageViewer().Show(); public void toolStripButton1_Click(object sender, EventArgs e);** 
                    break;
                case 2: new AudioPlayer().Show();
                    break;
                case 3: new VideoPlayer().Show();
                    break;
       }
    }
}

ありがとうございました。

4

5 に答える 5

0

あなたがしているのは、メソッド呼び出しではなく、メソッド宣言です。試す

switch(ofdSelectMedia.FilterIndex){
    case 1: new ImageViewer().Show(); 
        toolStripButton1_Click(sender, e);
        break;
    case 2: new AudioPlayer().Show();
        break;
    case 3: new VideoPlayer().Show();
        break;
}
于 2013-03-12T10:42:06.613 に答える
0

以下に示すように PerformClick() を使用します

public partial class MediaPlayer : Form
{

public ImageViewer iv;
public AudioPlayer ap;
public VideoPlayer vp;

public MediaPlayer()
{
    InitializeComponent();
}

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (ofdSelectMedia.ShowDialog() == DialogResult.OK)

        switch(ofdSelectMedia.FilterIndex){
            case 1: 
                new ImageViewer().Show();
                toolStripButton1.PerformClick();
                break;
            case 2: new AudioPlayer().Show();
                break;
            case 3: new VideoPlayer().Show();
                break;
   }
}
于 2013-03-12T10:42:24.377 に答える
0

これを試して..

public void toolStripButton1_Click(object sender, EventArgs e)
{
somemethod();
}

void somemethod()
{
 //your code which u want to execute on click of a button
}

somemethod();ケース1 では、イベントを呼び出す代わりにメソッドを呼び出します。

于 2013-03-12T10:39:33.123 に答える
0

コードを toolStripButton1_Click メソッドから関数に移動し、case 節と toolStripButton1_Click ハンドラーから呼び出します。

private void DoIt()
{
    // The code from the toolStripButton1_Click handler
}    

private void toolStripButton1_Click(object sender, EventArgs e)
{
    DoIt();
}



private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (ofdSelectMedia.ShowDialog() == DialogResult.OK)

        switch(ofdSelectMedia.FilterIndex){
            case 1: new ImageViewer().Show(); 
                DoIt();
                break;
            case 2: new AudioPlayer().Show();
                break;
            case 3: new VideoPlayer().Show();
                break;
   }
}
于 2013-03-12T10:39:55.920 に答える
0

のような意図があるようです。

case 1:
    var imgViewer = new ImageViewer();
    imgViewer.Show();
    imgViewer.toolStripButton1_Click(sender, e);
    break;

個人的には、リファクタリングImageViewerしてShowImageメソッドなどを作成すると、次のようになります。

case 1:
    var imgViewer = new ImageViewer()
    imgViewer.Show();
    imgViewer.ShowImage();
    break;

そしてあなたImageViewerは持っています:

public void ShowImage() {...}

void openToolStripMenuItem_Click(object sender, EventArgs e) {
    ShowImage();
}
于 2013-03-12T10:43:38.153 に答える