- PR -

ユーザーコントロールはプロジェクトの中に置いたらいけないんですか?

1
投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2005-12-13 15:39
VB2005ですが、ユーザーコントロールを編集する度に、エラーがでます。

コード:

型 '私のプロジェクト.私のコントロール' が定義されていません。
C:\\\\ソース置き場\\\\私のプロジェクト\\\\私のフォーム.Designer.vb



各関係は、次のようになっています。

コード:

私のプロジェクト
|−私のコントロール
|−私のフォーム
|−私のクラス



問題の「私のフォーム.Designer.vb」ファイルを見ると、

コード:

'Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer

    'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
    'Windows フォーム デザイナを使用して変更できます。  
    'コード エディタを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.コントロール = New 私のプロジェクト.私のコントロール

           :
          中略
           :
        Me.ResumeLayout(False)
    End Sub
    Friend WithEvents コントロール As 私のプロジェクト.私のコントロール



こんな感じでコードが生成されています。
上記のソースから、「私のプロジェクト.」を削除するとコンパイルされるようになります。
しかし、私のフォームを変更する度に、上記のコードが生成されてしまいます。

どうすれば、「私のフォーム」を変更してもエラーがでなくなりますか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-13 16:11
引用:

R・田中一郎さんの書き込み (2005-12-13 15:39) より:

上記のソースから、「私のプロジェクト.」を削除するとコンパイルされるようになります。


ということは「私のプロジェクト」という名前空間が存在しないということでしょうか?

引用:

しかし、私のフォームを変更する度に、上記のコードが生成されてしまいます。
どうすれば、「私のフォーム」を変更してもエラーがでなくなりますか?


上記通りであれば、プロジェクト名と UserControl の Namespace を同一にするとか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2005-12-13 18:10
引用:


じゃんぬねっとさんの書き込み (2005-12-13 16:11) より:

ということは「私のプロジェクト」という名前空間が存在しないということでしょうか?




上記を読んで、「私のプロジェクト」名前空間が存在していることを再確認するために、インテリセンスにて確認してみたところ、ちゃんと反応したため「存在してるんだけどな〜」などとスクロールしながら眺めていたら、show というメソッドが目についたのです。
プロジェクト名の名前空間に、show メソッドです。
世の中、おかしなこともあるものです。



以下、お詫びです。



じゃんぬねっとさん、いつもありがとうございます。
じゃんぬねっとさんのおかげで、ここ数日間の悩みを解消できました。
そして、じゃんぬねっとさんには、心からお詫びさせていただきます。

先に挙げたプロジェクトの構成はサンプルであって実際は違います。
ソフトの名前(例えば ABC) をプロジェクト名につけ、同じ名前をメインとなるフォームにもつけておりました。
フォームの名前を変えたら、解決しました。

お騒がせして申し訳ありませんでした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-13 18:13
引用:

R・田中一郎さんの書き込み (2005-12-13 18:10) より:

プロジェクト名の名前空間に、show メソッドです。
世の中、おかしなこともあるものです。


これは、R・田中一郎さんの仕業ではなく別の方の仕業っぽいですね。

引用:

先に挙げたプロジェクトの構成はサンプルであって実際は違います。
ソフトの名前(例えば ABC) をプロジェクト名につけ、同じ名前をメインとなるフォームにもつけておりました。


しかし、名前空間ではなくインポートされた後のクラスを優先するのはちとおかしい気がしますね。
少なくとも、VS2003 ではそういったことはなかったように思えます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2005-12-14 09:37
引用:

じゃんぬねっとさんの書き込み (2005-12-13 18:13) より:
引用:

R・田中一郎さんの書き込み (2005-12-13 18:10) より:

プロジェクト名の名前空間に、show メソッドです。
世の中、おかしなこともあるものです。


これは、R・田中一郎さんの仕業ではなく別の方の仕業っぽいですね。



うちの会社は僕しか開発しないので、多分僕の仕業です。
別スレの梅干あきらさんの仰るような不思議な現象が起きたとも考えられますが、僕が名前を変えた記憶が微かにあります。

引用:

じゃんぬねっとさんの書き込み (2005-12-13 18:13) より:

しかし、名前空間ではなくインポートされた後のクラスを優先するのはちとおかしい気がしますね。
少なくとも、VS2003 ではそういったことはなかったように思えます。




ありがとうございます。
僕は、つい最近 VB6 から VS2005 に参戦したばかりの二等兵なので、以前の動作はわからないのですが、僕も、勝手にプロジェクトの名前空間を優先してくれるものだと思っていました。
なんにせよ、自爆してしまったことに変わりはありません。

 「プロジェクト名に含まれるファイル名を、プロジェクト名にしちゃいけない。」

という何となく当たり前なことが、一応、皆さんの参考にでもなれば、自爆した甲斐もあります。
1

スキルアップ/キャリアアップ(JOB@IT)