0

ユーザーが 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' の定義が含まれておらず、タイプ 'System.EventArgs' の最初の引数を受け入れる拡張メソッド 'Graphics' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

EventHandler を PaintEventHandler に置き換えようとしましたが、ここでエラーが発生します。

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 に暗黙的に変換することはできません

*注: * 私の全体的な目標は、すべての画像をサムネイル形式で表示するダイアログを呼び出すことです。したがって、これが正しい方法でない場合は、リダイレクトしてください

4

2 に答える 2

1

ペイント イベントとクリック イベントを混同しています。ユーザーがボタンをクリックしたときに何かを発生させたい場合は、それをクリック イベントに入れます。ボタンのクリックで何にペイントしますか?

代わりに、ボタン クリック イベントで画像を表示する新しいフォームを設計し、画像を収集して、それらの画像をダイアログに提供します。ダイアログにそれらの表示を心配させてください。

于 2012-11-30T19:11:45.843 に答える
0

もともとOnPaintイベントにあったサンプル コードをいくつか取得したようです。Graphicsオブジェクトを渡さない、まったく異なるタイプのイベントにこれを追加しました。OnPaintこれを必要とするコントロールのイベントにこのコードを配置するか、まったく別のアプローチを試す必要があります。

正しい解決策は、これをどのように機能させたいかによって異なります (すでに画面に表示されているものを更新しようとしているか、新しいダイアログを表示しようとしているかなど)。

于 2012-11-30T19:12:01.693 に答える