パネル ボタンをクリックするとポップアップする Excel アドインに winform ダイアログがあります。ワークシートに選択変更イベントを追加しました。イベントは初めて発生していません。ダイアログを閉じて、もう一度開く必要があります。今回はうまくいきます。ここに何か不足していますか、それとも Excel 相互運用 API のバグですか?
環境:Excel 2007、.NET 4.0、相互運用ランタイム: v1.1.4322
以下はコードです
public partial class CreateColumn : Form
{
public CreateColumn()
{
InitializeComponent();
Excel.Worksheet ws = Globals.ThisAddIn.Application.ActiveSheet;
//Bug: this event does not fire the first time.. works on second time.
ws.SelectionChange += new Excel.DocEvents_SelectionChangeEventHandler(ColRangeSelChange);
}
public void ColRangeSelChange(Excel.Range target)
{
System.Windows.Forms.MessageBox.Show(target.AddressLocal);
}}
これは、列の作成が呼び出される方法です
private void smartTemplateBtn_Click(object sender, EventArgs e)
{
Range SelectedRange = Globals.ThisAddIn.Application.Selection;
if (SelectedRange != null)
{
List<string> DataSetLabels = new List<string>();
foreach (Range cell in SelectedRange.Cells)
{
if (cell.Value2 != null && !cell.Value2.Equals(""))
{
if (!DataSetLabels.Contains(cell.Value2))
{
DataSetLabels.Add(cell.Value2);
}
}
}
if (DataSetLabels.Count > 0)
{
PopupCreateColumnDialog(DataSetLabels);
}
}
}
public void PopupCreateColumnDialog(List<string> DataSetLabels)
{
if (DataSetLabels.Count > 0)
{
CreateColumn colDialog = new CreateColumn();
colDialog.TopMost = true;
colDialog.Show();
}
}