无法将类型'object'隐式转换为'Flashloader.Controller'

时间:2013-06-21 08:26:02

标签: c#

有人可以帮我解决这个问题,我无法弄明白我应该做些什么 这是错误:

  

错误1无法将类型'object'隐式转换为   '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文件并且我已经拥有了该功能,但在某种程度上我得到了这个错误。

2 个答案:

答案 0 :(得分:2)

正如错误消息所示,请写一个显式转换:

toepassing.Controller = (Flashloader.Controller)controllerComboBox.SelectedItem;

答案 1 :(得分:0)

您可以尝试使用安全演员。

这样的东西
toepassing.Controller = controllerComboBox.SelectedItem as Flashloader.Controller;

查看as (C# Reference)

  

as运算符用于执行某些类型的转换   在兼容的引用或可空类型之间。

     

as运算符就像一个强制转换操作。但是,如果转换   是不可能的,因为返回null而不是引发异常。

as运算符有什么好处,你可以在之后测试变量为null以查看强制转换是否成功,而直接强制转换会在失败时抛出异常。