3

これは私にとって初めてのことで、完全に頭がおかしくなったと思いました。datagridview を追加する単純な winform アプリケーションがあります。6 つの他のプロジェクトで使用したものと同じソースを使用して、dgv のデータソースを設定し、必要に応じてグリッドを構成します。この時点では、グリッド以外にフォームには何もありません。プロジェクトには、データ セット、バインディング ソース、およびテーブル アダプターが含まれています。偉大な。ただし、これを行う際にデザイナーによって生成されたコードは無効であり、コンパイル エラーを引き起こし、データ セット テーブル アダプター オブジェクトとデータ セット自体が存在しないことを示しています。

コンパイル エラーが発生しているデザイナーに移動すると、次の行が表示されます。

this.tILEDataSet = new ImageEdit.TILEDataSet();
this.logosTableAdapter = new ImageEdit.TILEDataSetTableAdapters.LogosTableAdapter();

ImageEdit は、このバインドされたコントロールを追加したクラスです。「ImageEdit.」を削除すると、コードはコンパイルされ、完全に機能します。もちろん、これはデザイナーが生成したファイルなので、他の変更を加えるとすぐに問題のコードに戻ります。

これを 3 つの異なるプロジェクトで 3 回行い、2 回は Visual Studio の新しいインスタンスを使用してゼロから始めました。

これが発生する原因は何ですか? また、デザイナー ファイルを手動で編集する以外に修正方法はありますか?

私は何も変更しませんでした。すべてデザイナーによって生成されました。名前空間とクラスの両方が ImageEdit として作成されました。デザイナには次の定義が含まれています。プライベート TILEDataSetTableAdapters.LogosTableAdapter logosTableAdapter;

デザイナー クラスの定義は、global::System.ComponentModel.Component から派生します。

public partial class LogosTableAdapter : global::System.ComponentModel.Component {
    .
.
.

洞察力をありがとう。

4

3 に答える 3

7

ImageEdit名前空間、クラス、その他のメンバーのいずれであっても、ソリューションに という名前のメンバーがいくつかあると思われます。Microsoft's Guidelines for Names、特にNames of Namespacesでは、次のことを推奨しています。

名前空間名に会社名のプレフィックスを付けて、異なる会社の名前空間が同じ名前とプレフィックスを持つことを防ぎます。

名前空間とその名前空間の型に同じ名前を使用しないでください。たとえば、名前空間名に Debug を使用せず、同じ名前空間で Debug という名前のクラスも提供します。一部のコンパイラでは、そのような型を完全修飾する必要があります。

単一のアプリケーション モデル内の名前空間の型に同じ名前を付けないでください。
たとえば、Windows フォーム アプリケーション開発者が使用する特別なコントロールのライブラリを作成している場合は、アプリケーション モデル (CheckBox) にこの名前の型が既に存在するため、Checkbox という名前の型を導入しないでください。

2 番目のポイントだけで問題が解決するはずです。最初のポイントである会社名を名前空間の一部として使用すると、コード ジェネレーターはオブジェクトに次のようなより簡潔な名前を提供します。

this.tILEDataSet = new MyCompany.ImageEdit.TILEDataSet();
this.logosTableAdapter = new MyCompany.ImageEdit.TILEDataSetTableAdapters.LogosTableAdapter();
于 2012-08-02T22:50:06.560 に答える