EnvDTE ライブラリを調べて、フォーム ジェネレータを構築しています。
フォームにコントロールを正常に追加しましたが、コントロールのコードがフォーム デザイナー (formname.Designer.cs) に追加されません。これは、コントロールがまだ宣言されていないため、イベント ハンドラーを追加する場合に問題になります。 .
ボタンをダブルクリックすると、フォーム デザイナーのボタンにイベント ハンドラーが追加され、フォーム デザイナーにすべてのコントロールが追加されます。したがって、更新はそれを行う必要があります。
コントロールを追加する方法は次のとおりです。
//this ProjectItem (itemFrom) is a reference to a recently added form,
//and its only window is my form
Window myWindow = itemForm.Document.Windows.Item(1);
IDesignerHost myDesigner = (IDesignerHost)myWindow.Object;
IComponent comp = myDesigner.CreateComponent(typeof(Button), "MyNewButton);
質問: コントロールへの参照を取得し、イベント ハンドラーをコントロールに追加するために、(EnvDte または VS API を使用して) フォーム デザイナーをプログラムで更新するにはどうすればよいですか?
奇妙な点の 1 つは、VS アドインを使用してフォームにコントロールを追加するチュートリアルをいくつか見つけましたが、この問題について言及しているものはありません..