我正在尝试在Epicor 10中构建一个自定义窗口。 我添加了一个图片框,只是尝试从文件打开图片(bmp),然后用另一个按钮将其保存在其他地方。 问题是在Epicor 10的自定义工具对话框中,我在编译时编写代码,我不断收到此错误:
Error: CS1061 - line 258 (953) - 'object' does not contain a definition for 'Save' and no extension method 'Save' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
** Compile Failed. **
现在,当我复制代码并使用Visual Studio 2012重新创建一个Windows窗体应用程序时,一切正常,编译完全没有错误。
代码非常简单:
private void epiButtonC6_Click(object sender, System.EventArgs args)
{
var fd = new SaveFileDialog();
fd.Filter = "Bmp(*.Bmp)|*.bmp;| Jpg(*Jpg)|*.jpg;| Png(*Png)|*.png";
fd.AddExtension = true;
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
switch (Path.GetExtension(fd.FileName).ToUpper())
{
case ".BMP":
epiPictureBoxC1.Image.Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case ".JPG":
epiPictureBoxC1.Image.Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case ".PNG":
epiPictureBoxC1.Image.Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Png);
break;
default:
break;
}
}
}
答案 0 :(得分:0)
EpiPictureBox不是从System.Windows.Forms.PictureBox派生的。它源自Infragistics.Win.UltraWinEditors.UltraPictureBox。
System.Windows.Forms.PictureBox 上的Image属性属于 System.Drawing.Image ,其中 Infragistics.Win.UltraWinEditors的Image属性.UltraPictureBox 是 System.Object 。这就是为什么事情没有像你期望的那样表现的原因。
我能够通过使用以下工作来获得一个模型,只要你确定分配给epiPictureBoxC1.Image的proptery的任何内容确实可以被转换为系统。 Drawing.Image 强>
switch (Path.GetExtension(fd.FileName).ToUpper())
{
case ".BMP":
((System.Drawing.Image)epiPictureBoxC1.Image).Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case ".JPG":
((System.Drawing.Image)epiPictureBoxC1.Image).Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case ".PNG":
((System.Drawing.Image)epiPictureBoxC1.Image).Save(fd.FileName, System.Drawing.Imaging.ImageFormat.Png);
break;
default:
break;
}