intro: autocadから.net APIを使用してカスタムコントロールを作成しようとしています。カスタムUserControlは、親UCに追加するとCommon Language Runtimeエラーを生成します
私はUCの基本設計を作成し、それをカスタムUCにグループ化し、後でメインUCに呼び出すことにしました。 (基本的にはコード管理、組織...のために、このようなコード構造で私を残して:いくつかのカスタム子UCの いくつかのボタンからなるものを子供のUCSのそれぞれ、およびコンボボックスの
UC(上)-consisting
シンプルはこれまで...これらの子UCの中
は、私は簡単なACADメソッド/オブジェクトを呼び出す。
私がメインUCにそれらの子のUCSの1を追加しようとすると問題が表示されます。 「CLRエラー」(画像が添付されている)が表示される
https://s32.postimg.org/6gnt3sgz9/why_no_work.jpg
私はこの問題を解決する方法をいくつか試しました。 1)UC の代わりにカスタムコントロールを使用する2)ソリューションをクリアして、ソリューションを再構築しようとしました。 3)UCコードの外からACADメソッドを呼び出す別のクラスを作成しようとしました
基本的に、私が学んだのは、ユーザーからコードを実行すると私はUCコンストラクタ、またはUC_Loadイベントメソッド内からacadコマンドを呼び出そうとすると、私はchildAdUCを追加しようとするとCLRエラーを受け取ることになります(VSdesignerを介してコードで追加すると、デザイナーに電話してみるとエラーが発生します)
「UC_load」または「UC_load」からコードが呼び出されるかどうかによってコードが異なる動作をする理由を知りたいのですが"button_clicked" .....
public partial class child : UserControl
{
public child()
{
InitializeComponent();
//if I initialize doc here, I get the error
}
private void child_Load(object sender, EventArgs e)
{
//if I initialize doc here, I get the error
}
private void button1_Click(object sender, EventArgs e)
{
//it works here, but Im unsure why
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
}
}
「文書ドキュメント=エラー発生行であり、ここで
は誤差の画像、およびソリューションです :ここ
は私のコードです。エラーは、C#のACAD 2017を使用して。私はデザイナーに、または私はコードから「子オブジェクト」を追加した後にデザイナーを開く前に、子オブジェクトをklikたときに表示される、VS2015、x64の
私は決してパートをコンパイルすることはありません。別のUCを追加するときにエラーが発生します。要点は、すべての要素が1つのUC(Acad APIコードとUCロジック)の中にあるだけで、すべての機能が動作することに気づく興味深いものがある を形成しないUCだけを受け付けるacads GUIにメインUCを追加することです。しかし、現時点では、コードをいくつかの「サブUC」に分割することに決めました。エラーが表示されます。 そのようなVSは、すべてのカスタムUCがそれらの中に統合されたロジックを持つことを期待しています。そして、別のUCにそれらを追加するとき、彼は「緩い終わり」を見つけます。 「別のUIとbizロジック」の意味を詳しく説明できますか? –
あなたはそれをPaletteSetに追加していますか? UIとビジネスロジックを分離するための私の提案はまだ適用され、コマンドラインでロジックを再利用できるようになります。例えば –
です。私はPSに追加しています。私は前のコメントを編集しました。 Iveは別のクラスにacadパーツを分離しようとしましたが、そのクラス/オブジェクトからメソッドを呼び出すと、UCコンストラクタまたはUC_Loadで呼び出すときにエラーが発生します。 「UIとBizを分ける」という意味がわかりません。クラスを別々にするか、bizパーツをdllにプリコンパイルするか、sendstringを使用して実行するか、あるいは私が考えなかった3番目のメソッドを使用するだけですか? –