質問

DLLをC#に分解しています。 Decompiler Generatedプロジェクトの1つには、以下のようなものが1000以上のバグの行が含まれています。

this.pictureBox1.BeginInit();
.

エラー385 'System.Windows.Forms.PictureBox'には含まれていません 'beginInit'と拡張メソッド 'begininit'の定義 type 'system.windows.forms.picturebox'の最初の引数を受け入れる 見つかった可能性があります(あなたはディレクティブまたはアセンブリを使っていますか? 参照?)

通常の写真ボックスのbinhinit()メソッドはありません。私は単に行をコメントアウトしました:

//this.pictureBox1.BeginInit();
.

それから私は別の偏差の出力を調べました、それは以下のように見え、そしてvsコンパイラは以前のエラーを持っていません:

((ISupportInitialize)this.pictureBox1).BeginInit();
.

クラッシュのために、私は2番目の逆コンパイラですべてのソースを一度にエクスポートできませんでした。今私が何をしなければならないのかわからない。最初にクリアする必要があるため、プロジェクトを実行&デバッグできませんでした。私のオプションは次のとおりです。

  1. 行をコメントしてください。
  2. 変更と挿入(IsupportInitialize)タグ。
  3. 可能であれば拡張方法を作成します。
  4. 最後の選択肢は私にとって最も簡単なようです。 Semendit()拡張方法を作成できますか?問題なく機能しますか?そして、ISupportInitializeを実装して使用することができますか?

役に立ちましたか?

解決

これを試してみてください:

public static class PictureBoxExtension {
   public static void BeginInit(this PictureBox pb){
     ((ISupportInitialize)pb).BeginInit();
   }
}
.

またはさらに良く、ISupportInitializeをサポートするすべてのコントロールに対してこれを試すことができます。これは通常のアクセスから隠されています。

public static class SupportInitExtension {
   public static void BeginInit<T>(this T c) where T : ISupportInitialize {
     c.BeginInit();
   }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top