0

メイン フォームで MouseEventHandler を作成します。

        public Home()
        {
            InitializeComponent();

            this.KeyPreview = true;
            this.MouseMove += new MouseEventHandler(Home_MouseMove);
        }

        public static void Home_MouseMove(object sender, MouseEventArgs e)
        {
            bomb.Stop();
            bomb.Start();
        }

別のフォームから MouseEventHandler を呼び出すにはどうすればよいですか?

他に良い方法はありますか?

4

2 に答える 2

0

最初に Home_MouseMove イベントを非静的に変更する必要があります:

public void Home_MouseMove(object sender, MouseEventArgs e)
    {
        bomb.Stop();
        bomb.Start();
    }

program.cs ファイルに移動し、次のコードを変更します。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FrmMain());
    }
}

このコードに:

static class Program
{
    public static FrmMain MainForm;// add this line
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MainForm = new FrmMain();// add this line
        Application.Run(MainForm);
    }
}

form2 では、次のようにメイン フォームで MouseMove を呼び出すことができます。

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();   
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // call MouseMove event in main form
        Program.MainForm.FrmMain_MouseMove(null, null);
    }
}
于 2012-07-12T11:04:01.870 に答える
0

私はそれをテストしました。できます。メインフォームのコードは次のとおりです。

public partial class FrmMain : Form
{
    public FrmMain()
    {
        InitializeComponent();
    }

    public void FrmMain_MouseMove(object sender, MouseEventArgs e)
    {
        this.label1.Text = DateTime.Now.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        new Form1().Show();
    }
}

Form1 コードは次のとおりです。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Program.MainForm.FrmMain_MouseMove(null, null);
    }
}

クリックイベントのあるボタンが1つあります。ボタンをクリックすると、メインフォームのマウス移動イベントが発生します

最後に、program.cs コードは次のとおりです。

static class Program
{
    public static FrmMain MainForm;
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MainForm = new FrmMain();
        Application.Run(MainForm);
    }
}

私はそれをテストしました、そしてそれは言葉です。必要に応じてプロジェクトを送信できます

于 2012-07-21T10:18:14.713 に答える