ArcObjects(ArcGIS for DesktopおよびC#):ArcMap COM UIとカスタム.Net UserControlオブジェクトの間をキャストする方法は?
ArcObjects(9.3.1 SDK)とC#.Netを使用して、ArcGIS for Desktopで実行するユーティリティを作成しています。私のプロトタイプには、2つのコンボボックスとツールを備えたツールバーが含まれています。最初のコンボは目次のレイヤーを選択し、2番目のコンボは選択したレイヤーからフィールドを選択します。このツールは、地図を操作するために使用されます。 基本的に、レイヤーを選択し、有効なフィールドを選択してから、マップ内のフィーチャをクリックして、選択したフィールドの値を取得します。役立つ場合は、ツールバーの画像を次に示します。 [質問はここからほぼ完全に書き直されました] 私が抱えている問題は、ネイティブCOM UIパーツとカスタム.Netコントロールの間で状態を渡すことです。たとえば、レイヤーコンボボックスでDropDownClosedイベントをキャッチし、そのレイヤーに関連する列の有効なリストをアセンブルし、フィールド名のリストを(IFieldsを介して)フィールドコンボボックスに適用します。 RagiYaserBurhamとblah238による最初のコメントを適用し、これらをこのページの詳細とマージした後、次のDropDownClosedイベントハンドラーはコンボボックスからツールバー(ICommandBar)に戻りますが、ICommandItemからキャストする方法がわかりませんUserControlのFieldsコンボボックスの実装に: private void layerSelectCBO_DropDownClosed(object sender, EventArgs e) { _completionNotify.SetComplete(); string layerName = (sender as ComboBox).SelectedItem as string; // These two lines are a combination of initial commenter suggestions. ICommandItem toolbar = _iApp.Document.CommandBars.Find("ArcProject.UI.AngryToolbar", false, false); ICommandItem fieldsItem = (toolbar as ICommandBar).Find("ArcProject.UI.FieldSelectUC", false); } …