내 Excel 추가 기능에 winform 대화 상자가 있는데, 패널 단추를 클릭 할 때 팝업됩니다. 워크 시트에 선택 변경 이벤트가 추가되었습니다. 이벤트가 처음 해고되지 않습니다. 대화 상자를 닫고 다시 열어야합니다. 이번에는 작동합니다. 여기에 뭔가 빠져 있거나 interop API를 능가하는 버그가 있습니까?Excel 워크 시트 SelectionChange 이벤트가 firsr 시간에 작동하지 않지만 두 번째로 작동합니다.
Enviornment : 엑셀 2007, .NET 4.0, 상호 운용성 런타임 : V1.1.4322
다음은 후
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();
}
}
코드가 올바르게 표시됩니다. CreateColumn()이 잘못 호출 되었기 때문에 (너무 늦게 또는 두 번 이상 등) 또는이 이벤트의 동작에 영향을주는 다른 이벤트 (예 : 응용 프로그램 종료)를 선언했기 때문에 문제가 발생할 수 있습니다. 빠른 도움말을 얻으려면 코드를 더 작성하거나이 부분을 조금 더 잘 사용하는 방법을 설명해야합니다. – varocarbas
@varocarbas 안녕하세요, 답장을 보내 주셔서 감사합니다. 이 대화 상자가 호출되는 방법을 보여주기 위해 게시물을 편집했습니다. –
이 코드에서 이해할 수있는 것부터 : 먼저 주어진 스프레드 시트에 연결하고 Excel.Worksheet 변수를 정의합니다. 이 변수 (모든 선택된 셀)에서 특정 범위를 얻고 있습니다. 특정 조건이 충족되면 (둘 이상의 요소가있는 DataSetLabels) 열 비트를 호출합니다. 이 부분에서는 워크 시트 (아마도 이전과 같음)와 이벤트를 할당합니다. 내 질문은 : 왜 스프레드 시트를 처음 정의 할 때 이벤트 (이 이벤트와 다른 이벤트를 사용할 것인가)를 지정하지 않는 이유는 무엇입니까? – varocarbas