- - PR -
カスタムコントロールから、デザイン時にプロジェクトのパスを取得する方法
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-11-25 16:37
いつもお世話になっております。
Windowsフォーム用のカスタムコントロールを作成しています。 作成しているカスタムコントロールのプロパティ内容を外部ファイルから読み込むようにしたいのですが、デザイン時にカスタムコントロールを使用するプロジェクトのパスを取得する方法が分からず困っています。 何か良い方法はないでしょうか よろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-11-25 19:36
普通はパスの設定をプロパティにすれば良いので、カスタム コントロールはプロジェクトのパスを知らなくて良いと思いますが。 もし設定させず固定で持つのであれば、それは外部ファイルではなく埋め込んでおくべきですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-11-25 23:15
回答ありがとうございます。
カスタムコントロールで次の内容を実現したいと思っております。 1.見た目に関するプロパティ群を外部ファイルにて状態名とともに保持しデザイン時にカスタムコントロールに状態名を指定することでプロパティ群を一括で設定 2.プロジェクト内のすべてのフォームで同一の外部ファイルの内容を読み込むことで全フォームの見た目を一元管理する この内容を実現するために、現在はカスタムフォームを作成しプロパティにプロジェクトのパスと外部ファイル名をセットしているのですが、複数人で開発を行う場合にフォームのプロパティにプロジェクトパスをセットしているためすべての開発環境のディレクトリ構成を統一する必要があり困っています。 デザイン時のコントロールをデバッグしたところ、Assemblyから実行中のパスを取得するとIDEのパスが戻されてしまいます。 IDEでは、現在オープンしているプロジェクトの情報を持っていると思っているのですがその情報を取得する方法がわかりません。 何か良い方法がありましたら教えてください。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-11-25 23:55
こんばんは。
デザイン時でなく、実行時にじゃんぬねっとさんのやり方を 行うので良いような気がしますが、デザイン時にしたい理由 は何なのでしょう。 また、ソースの一部を記載してもらえれば、お力になれるかも しれません。 | ||||||||
|
投稿日時: 2008-11-26 09:07
すべきではないのでしょうか? | ||||||||
|
投稿日時: 2008-11-26 09:32
カスタム コントロールのアプリケーション構成ファイル(app.config)に持てばよいのでは? | ||||||||
|
投稿日時: 2008-11-26 10:18
カスタムコントロールのあるプロジェクトと、それを利用している Windows フォームのあるプロジェクトは別ということであってますか?
そのうえで、Windows フォームのあるプロジェクトのアプリケーション構成ファイル(app.config)に、カスタムコントロール用のセクションを用意します。(カスタムコントロール側の app.config からコピーしてくるのが手っ取り早いでしょう) そうすれば、app.config(正確には アセンブリ名.exe.config)を書き換えることで設定を変更することができます。 皆さんが仰る通り、プロジェクトのパスを持つ必要はありませんし、持つべきでもないと思います。 | ||||||||
|
投稿日時: 2008-11-27 10:33
回答ありがとうございます。 デザイン時に外部ファイルを読み込みたいのは、見た目に関するプロパティ群を管理しデザイン時にコントロールに適用し見た目を確認したいからです。 現在の内容 カスタムコントロールと同じDLLにStaticのManagerクラスを作成しており Managerクラスに外部ファイルより見た目プロパティ群を保持し カスタムコントロールには、ViewPropプロパティを追加し見た目プロパティ群の状態名の一覧を表示し、デザイン時に選択するようにしています。 見た目プロパティ群の内容 TextBox.通常 BackColor = white ForeColor = Black TextBox.必須 BackColor = blue ForeColor = white のような形で、通常/必須が状態名としViewPropプロパティで選択することで TextBoxのBackColor/ForeColorを同時にセットしています。 今回問題となっているのは、カスタムコントロールを使用するプロジェクトでフォームデザイナで表示したときに、Managerクラスに外部ファイルを読み込み見た目プロパティの値をセットしたいのですが、外部ファイルの場所をカスタムフォームにProjectPathプロパティにセットしないと読み込むことができません。 これを、IDEで開いているプロジェクトのパスを取得する方法があればProjectPathプロパティなしで外部ファイルを読み込めるようにしたいと考えています。 現在、カスタムフォームデザイナークラスにて private string ProjectPath { get { return _projectPath; } set { _projectPath = value; LoadViewProperty(); // ここで外部ファイルを読み込み見た目関連のプロパティ群を保持しています。 } } 説明がうまくできないで申し訳ありません。 何かよい方法はないものでしょうか |
1|2|3|4
次のページへ»