0

ほとんどのフォームでメソッドを使用しており、このメソッドをクラスで作成して呼び出したいと考えています。

これが方法です:

    using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;
using System.IO;

namespace GestionBib
{
    class MyClass
    {
    public void InfoLabel(string value)
        {
            if (InvokeRequired)
            {
                this.Invoke(new Action<string>(InfoLabel), new object[] { value });
                return;
            }
            barStaticItem3.Caption = value;

            if (!String.IsNullOrEmpty(value))
            {
                System.Timers.Timer timer = new System.Timers.Timer(6000) { Enabled = true };
                timer.Elapsed += (sender, args) =>
                {
                    this.InfoLabel(string.Empty);
                    timer.Dispose();
                };
            }

        }
}


}

問題は、クラスでこのメソッドを作成すると、次のエラーが発生することです。

エラー 1:

「InvokeRequired」という名前は現在のコンテキストに存在しません

エラー 2:

「GestionBib.MyClass」には「Invoke」の定義が含まれておらず、タイプ「GestionBib.MyClass」の最初の引数を受け入れる拡張メソッド「Invoke」が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

4

1 に答える 1

1

Invoke簡単に言えば、あなたのクラスはmethod も. も宣言していませんInvokeRequired。何らかの方法でそれらを実装するか、フォームを派生させるクラス フォーム タイプを派生させる必要がありますControl(Formたとえば)。

于 2012-09-27T09:14:00.570 に答える