2009-08-12 3 views
2

SpreadsheetGear의 WorkbookView 컨트롤을 사용하는 C# 응용 프로그램이 있습니다. 사용자는 저장 한 셀에 대한 주석에 대한 변경을 원할 수 있습니다.스프레드 시트가있는 WorkbookView 컨트롤에서 주석 변경 액세스

사용자가 댓글을 수정할 때 변경 사항을 캡처하는 방법을 알고있는 사람이 있습니까? 셀 편집 이벤트는 주석을 편집 할 때 시작되지 않으며 사용자가 주석을 작성한 변경 사항을 캡처 할 수있는 방법을 찾을 수 없습니다.

답변

3

의견을 개별적으로 저장하는 방법을 알지 못하는 Joe의 답변을 읽기 전에 필자는 workbookView의 셀을 반복하여 주석을 저장하고 양식이 닫힐 때 주석을 가져 가기로 결정했습니다.

답글을 본 후 workbookView1_ShapeSelectionChanged 및 workbookView1_ShapeAction 이벤트를 조합하여 입력 한 후 바로 의견을 제시 할 수있는 방법을 찾았습니다. 편집을 위해 주석 상자가 열리고 편집을 위해 주석 상자가 닫힐 때 workbookView1_ShapeSelectionChanged 이벤트가 발생합니다. 코멘트 상자를 열면 발동 될 때, 코멘트 상자를 닫을 때 더 이상 ActiveCell이 아니기 때문에 ActiveCell을 얻습니다. 댓글이 변경되면 댓글 상자가 닫힐 때 댓글을 받기 위해 해당 셀을 사용합니다. workbookView1_ShapeAction 이벤트는 새 문자가 주석 상자에 입력 될 때마다 발생하며 주석이 변경된 것으로 표시하는 데 유용합니다. 주석이 저장되면 commentChanged 변수가 false로 다시 설정됩니다. 다음은 Joe가 답변에 게시 한 코드를 사용하는 코드입니다.

private void workbookView1_ShapeAction(object sender, SpreadsheetGear.Windows.Forms.ShapeActionEventArgs e) 
{ 
    switch (e.ShapeActionType) 
    { 
    case SpreadsheetGear.Windows.Forms.ShapeActionType.TextChanged: 
     if (e.Shape.Type == SpreadsheetGear.Shapes.ShapeType.Comment) 
     { 
     //set comment changed flag to true 
     _commentChanged = true; 
     } 
     break; 
    } 
} 

private void workbookView1_ShapeSelectionChanged(object sender, SpreadsheetGear.Windows.Forms.ShapeSelectionChangedEventArgs e) 
{ 
    if (_commentChanged) 
    { 
    //get comment 
    string comment = _commentCell.Comment.Shape.TextFrame.Characters.Text; 

    //save comment 
    //.... 

    //set comment changed flag to false 
    _commentChanged = false; 
    } 
    else 
    { 
    //get the cell whose comment is being edited 
    _commentCell = workbookView1.ActiveCell; 
    } 
} 
1

불행히도, 대답은 "일종의하지만 정말"입니다.

아래에 설명 된대로 ShapeAction 이벤트를 catch 할 수 있지만 ShapeAction 이벤트는 실제로는 모양이 아니라 도형에 맞게 디자인되어 있으므로 현재 텍스트 (도형에 아직 저장되지 않은 텍스트)를 가져올 수 없으며 짝수 코멘트가 속하는 셀을 취득합니다. 이 기능을 요구하는 SpreadsheetGear에서 지원하는 이메일을 보내는 경우가과 관련된 이메일 주소로 자신의 목록에이 기능 요청을 추가합니다

private void workbookView1_ShapeAction(object sender, SpreadsheetGear.Windows.Forms.ShapeActionEventArgs e) 
    { 
     switch (e.ShapeActionType) 
     { 
      case SpreadsheetGear.Windows.Forms.ShapeActionType.TextChanged: 
       if (e.Shape.Type == SpreadsheetGear.Shapes.ShapeType.Comment) 
       { 
        // Unfortunately, this is as far as we can get since IShape 
        // does not have a way to get back to the cell which owns the comment. 
        // 
        // Furthermore, the text is not yet stored in the IShape, so we 
        // cannot get the current text either. 
       } 
       break; 
     } 
    } 

: 그것이 당신에게 유용 할 수 있기 때문에 아직도, 나는 몇 가지 코드에 붙여 넣습니다 그것.

+0

Joe, 코드 감사합니다. 그것은 내가 아래 답변에 게시 된 것으로 보이는 솔루션으로 나를 이끌었다. – Daniel

관련 문제