MS Wordアプリケーションを起動すると、
ボタンが作成され、MS Wordアプリケーションが閉じられるとボタンが削除されるアプリケーションを実行しています。だからここ
は...私はMS Wordやボタンを関連付けるために何をしたかであるC#でMS Wordの実行中のインスタンスを閉じる方法
しかし、私はこのエラーを取得していますここでエラーmapping.Add(new KeyValuePair<int, Button>(processId, deleteButton));
を得た:「追加のためのいかなるオーバーロードメソッドは1つの引数を取りません"...
どうすればいいですか?
これに対応するソリューションはありますか?
ありがとうございます。
編集:
私は自分のコードを変更しましたが、私が作成した最後のボタンだけを削除することはできますが、他のものを削除したいときは...私はブレークポイントを異なる変数。 しかし、私は2つのボタンを作成すると、mapping.addの数は常に1に等しいです...それは正常ですか?ここ
コードです:、私はあなたの実際の質問に答える方法がわからない
try
{
Word.Application wdApp = new Word.Application();
string oldCaption = wdApp.Application.Caption;
string guid = Guid.NewGuid().ToString();
//set caption to random value
wdApp.Application.Caption = guid;
//make sure app is visible:
wdApp.Visible = true;
//find random value to get process id
int processId = GetProcessIdByWindowTitle(guid);
//reset caption
wdApp.Application.Caption = oldCaption;
if(wdApp.Visible == true)
{
deleteButton = new Microsoft.Office.Tools.Word.Controls.Button();
//create a dictionary
mapping = new Dictionary<int, Button>();
//add mapping
mapping.Add(processId, deleteButton);
PIC_Barre.Controls.Add(deleteButton);
//PIC_Barre.Controls.Add(_button);
}
((Word.ApplicationEvents4_Event)wdApp).Quit +=() =>
{
// remove the button corresponding to the processid
var method = (Action)(() =>
PIC_Barre.Controls.Remove(mapping[processId]));
if (mapping[processId].InvokeRequired)
{
mapping[processId].Invoke(method);
}
// remove the key from the dictionary
};
Debugger.Break();
}
catch
{
}
https://msdn.microsoft.com/en-us/library/af6z0wa2.aspx – Danieboy
が、あなたが得ているエラーはかなり自明です。ディクショナリ .Addには1つの引数しかないオーバーロードはありません!! 1つの引数としてKeyValuePairを渡すのではなく、その順序でキーと値を2つの別々の引数として渡すだけです。 –
Jakotheshadows