有人可以帮我解决这个问题,我无法弄明白我应该做些什么 这是错误:
错误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文件并且我已经拥有了该功能,但在某种程度上我得到了这个错误。
答案 0 :(得分:2)
正如错误消息所示,请写一个显式转换:
toepassing.Controller = (Flashloader.Controller)controllerComboBox.SelectedItem;
答案 1 :(得分:0)
您可以尝试使用安全演员。
像
这样的东西toepassing.Controller = controllerComboBox.SelectedItem as Flashloader.Controller;
as运算符用于执行某些类型的转换 在兼容的引用或可空类型之间。
as运算符就像一个强制转换操作。但是,如果转换 是不可能的,因为返回null而不是引发异常。
as运算符有什么好处,你可以在之后测试变量为null以查看强制转换是否成功,而直接强制转换会在失败时抛出异常。