我需要在用户按下Gui上的菜单后显示一组图像。我一直在尝试使用以下代码。
private void imagePalleteToolStripMenuItem_Click(object sender, EventArgs e)
{
List<string> Files = this.MyImageCollection.ConvertFileNamesToList();
foreach (string currtFile in Files)
{
Image newImage = Image.FromFile(currtFile);
// Create rectangle for displaying image.
Rectangle destRect = new Rectangle(100, 100, 450, 150);
// Draw image to screen.
e.Graphics.DrawImage(newImage, destRect);
}
我认为这会有效,但我收到错误:
'System.EventArgs'不包含'Graphics'的定义,并且没有扩展方法'Graphics'可以找到接受类型'System.EventArgs'的第一个参数(你是否缺少using指令或汇编引用? )
我尝试用PaintEventHandler替换EventHandler,但后来我收到错误:
this.imagePalleteToolStripMenuItem.Click += new System.EventHandler(this.imagePalleteToolStripMenuItem_Click);
,指出:
'imagePalleteToolStripMenuItem_Click'没有重载匹配委托'System.EventHandler'
我也尝试将该行更改为:
this.imagePalleteToolStripMenuItem.Click += new System.Windows.Forms.PaintEventHandler(this.imagePalleteToolStripMenuItem_Click);
但这也是一个错误说明:
无法将类型'System.Windows.Forms.PaintEventHandler'隐式转换为'System.EventHandler'r
* 注意: *我的目标是调用一个对话框,以缩略图形式显示所有图像。因此,如果这不是正确的方法,请重定向我
答案 0 :(得分:1)
您将paint事件与click事件混淆。如果您希望在用户单击按钮时发生某些事情,请将其放入click事件中。你点击按钮会画什么?
相反,设计一个新的表单来显示您的图像,按钮点击事件,收集您的图像,并将这些图像提供给您的对话框。让对话框担心显示它们。
答案 1 :(得分:0)
看起来你抓住了最初在OnPaint
事件中的一些示例代码。您已将此添加到完全不同类型的事件中,该事件不会传递给您Graphics
对象。您需要将此代码放在OnPaint
事件的任何控件中,或者尝试完全不同的方法。
正确的解决方案取决于您希望如何工作(您是否尝试更新屏幕上的内容,显示新对话框等)。