0

誰かがこれを手伝ってくれますか、私は何をすべきかわかりません。
これはエラーです:

エラー 1 タイプ「オブジェクト」を「Flashloader.Controller」に暗黙的に変換できません。明示的な変換が存在します (キャストがありませんか?)

これは私のソースです:

public partial class NewApplication : Form
{

    private toepassinginifile _toepassinginifile;
    private controllerinifile _controllerinifile;



    //private controllerinifile _controlIniFile;

    public Toepassing toepassing = new Toepassing();

    public NewApplication( toepassinginifile iniFile)
    {
        _toepassinginifile = iniFile;
        _controllerinifile = new controllerinifile();

        controllerComboBox.DataSource = _controllerinifile.Controllers;

        InitializeComponent();
    }
    private void button4_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        openFileDialog1.Filter = "Srec Files (.a20; .a21; .a26; .a44)|*.a20; *.a21; *.a26; *.a44|All files (*.*)|*.*";

        openFileDialog1.Title = ("Choose a file");
        openFileDialog1.InitialDirectory = Path.Combine(Directory.GetCurrentDirectory());
        openFileDialog1.RestoreDirectory = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            fileBox.Text = (System.IO.Path.GetFileName(openFileDialog1.FileName));
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        toepassing.Name = nameBox.Text;
   ---->#toepassing.Controller = controllerComboBox.SelectedItem;#
        toepassing.TabTip = descBox.Text;
        toepassing.Lastfile = openFileDialog1.FileName;
        fileBox.Text = openFileDialog1.FileName;


        if (nameBox.Text == "")
            MessageBox.Show("You haven't assigned a Name");
        else if (controllerComboBox.Text == "")
            MessageBox.Show("You haven't assigned a Controller");
        else if (descBox.Text == "")
            MessageBox.Show("You haven't assigned a Desciption");
        else if (fileBox.Text == "")
            MessageBox.Show("You haven't assigned a Applicationfile");
        _toepassinginifile.ToePassingen.Add(toepassing);
        _toepassinginifile.Save();

        MessageBox.Show("Save Succesfull");



        this.Close();
    }
}

これを修正する方法は、コンボボックスをiniファイルに接続したいので、問題を見つけることができませんでした.

4

2 に答える 2

2

エラー メッセージにあるように、明示的な変換を記述してください。

toepassing.Controller = (Flashloader.Controller)controllerComboBox.SelectedItem;
于 2013-06-21T08:28:02.933 に答える
0

安全なキャストを使用してみてください。

何かのようなもの

toepassing.Controller = controllerComboBox.SelectedItem as Flashloader.Controller;

asを見てください(C# リファレンス)

as 演算子は、互換性のある参照型または null 許容型の間で特定の型の変換を実行するために使用されます。

as 演算子はキャスト操作に似ています。ただし、変換が不可能な場合、 as は例外を発生させる代わりに null を返します。

as 演算子の優れている点は、後でキャストが成功したかどうかを確認するために変数の null をテストできることです。一方、直接キャストは失敗した場合に例外をスローします。

于 2013-06-21T08:29:22.807 に答える