0

次のように宣言されたフォーム MainForm とフォーム form1 があります。

namespace SdkDemo
{
    public partial class MainForm : Form
    {        
        public CoreWrapper _icCore;        
        private Dictionary<string, int> audioDevices;

        #region MainForm Ctor

        public MainForm()
        {
            InitializeComponent();
            _icCore.Start();
        }

        public Form1 form1 = new Form1();
    }
}

したがって、form1 は Visual Studio ツールで作成されたばかりです。

form1 のコード全体:

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

        private void button1_Click(object sender, EventArgs e)
        {
            string dial = Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("CS").GetValue("DIAL").ToString();

            // Error "An object reference is expected":
            MainForm.txtSendKeys.Text = ("esdcze");
        }        
    }
}

問題は、「Mainform」で何かを呼び出そうとすると、オブジェクト参照エラーが表示されることです。もちろん、txtSendKeysフィールドはパブリックです。

ところで、逆のアクションを簡単に実行できます。つまり、次のようなことを行います

MainForm.textField = x

私のform1から。

私は C# に関する知識が深刻に不足していますが、これは私の仕事のためのものであり、今では必死になり始めています..

4

2 に答える 2

0

MainFormクラスを変更します。

public partial class MainForm : Form
{
    public CoreWrapper _icCore;
    private Dictionary<string, int> audioDevices;

    public MainForm()
    {
        InitializeComponent();
        _icCore.Start();
        // sets the form1's owner form to the MainForm instance
        form1.Owner = this;
        // show the Form1 form
        form1.Show();
    }

    public Form1 form1 = new Form1();

    internal void SetSendKeys(string value)
    {
        txtSendKeys.Text = value;
    }
}

Form1.button1_Clickメソッドの本体を変更します。

private void button1_Click(object sender, EventArgs e)
{
    string dial = Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("CS").GetValue("DIAL").ToString();
    var mainForm = (MainForm)this.Owner;
    mainForm.SetSendKeys("esdcze");
}
于 2013-05-31T10:43:18.210 に答える