0

何が行われようとしているのかを示すコードを提供するのは難しいですが、ここに要約があります:

「ロックオン」というボタンが Form1 にあり、Form2 には「ロックオン」が押される前に Form1 からデータを読み取るステートメントがあります (すべてのフォームが読み込まれるときなど)。「ロックオン」が押される前ではなく、押された場合にForm1にデータを読み取らせます。

それを行う方法はありますか?

これは、押された場合に実行したいものです。

private void FOne_Reader_Tick(object sender, EventArgs e)
    {
        //Reads fruit information

        //if lock on is pressed, do this:
        FOne_Reader.Enabled = true;
        Fruit fruity = new Fruit();
        string FileToRead = "../../../DLL/XML/Fruit_Event.xml";
        XmlSerializer serializer = new XmlSerializer(typeof(Fruit));
        fruity = (Fruit)XMLHandler.READXML(FileToRead, serializer);

        //if not
      ...
4

1 に答える 1

0

イベントを使用してこれを試してください:

Form1 コード:

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

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        Form2 dlg=new Form2();
        dlg.OtherFrom=this;            
        dlg.Show();
    }

    private void lockOnButton_Click(object sender, EventArgs e)
    {
        if(this.PressLock!=null)
        {
            this.PressLock();
        }
    }
}

Form2 コード:

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }
    Form1 form;
    public Form1 OtherFrom
    {
        get { return form; }
        set
        {
            this.form=value;
            this.form.PressLock += new Action(ReadFromForm1);
        }
    }

    public void ReadFromForm1()
    {
        // xml reading here
    }
}
于 2013-04-19T18:38:53.820 に答える