2013-03-12 44 views
-1

下面是我遇到的问题,特别是其中的一部分**。我想在我的ImageViewer打开时调用方法“toolStripButton1_Click()”。就目前而言,打开ImageViewer时,所选图像不会随之打开。我已经公开了这个方法,希望能够把它整理出来,但我没有。C#声明来自另一个类的方法

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; 
     } 
    } 
} 

谢谢。

+0

什么是确切的错误? – mariozski 2013-03-12 10:37:51

+0

toolstripbutton1_Click在哪里申报?您在代码示例中所做的全部是声明新的方法签名。你不会像你所想的那样称呼它。 – 2013-03-12 10:40:20

+3

你有什么**打算**发生与案例1:新的ImageViewer()。 public void toolStripButton1_Click(object sender,EventArgs e);' - 这是无效的语法,所以问题变成:你试图做什么?你打算打电话给那种方法吗?要么...? – 2013-03-12 10:41:08

回答

0

试试这个..

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

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

在案例1调用该方法somemethod();而不是调用的事件。

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; 
    } 
} 
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; 
} 
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; 
    } 
} 
+0

谢谢你的帮助!这非常有用。它现在有效。 – user2160449 2013-03-12 11:01:47

0

听起来像你打算是这样的:

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

虽然就个人而言,我会重构ImageViewerShowImage方法或类似方法,使其成为:

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

和你的ImageViewer有:

public void ShowImage() {...} 

void openToolStripMenuItem_Click(object sender, EventArgs e) { 
    ShowImage(); 
}