Share via


연습: 문서에서 라디오 단추를 사용하여 차트 업데이트

이 연습에서는 Microsoft Office Word용 문서 수준 사용자 지정에서 라디오 단추를 사용하여 사용자에게 문서의 차트 스타일을 선택할 수 있는 옵션을 제공하는 방법을 보여 줍니다.

적용 대상: 이 항목의 정보는 Word 2013 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

이 연습에서는 다음 작업을 수행합니다.

  • 디자인 타임에 문서 수준 프로젝트의 문서에 차트 추가

  • 라디오 단추를 사용자 정의 컨트롤에 추가하여 그룹화

  • 옵션을 선택할 때 차트 스타일 변경

결과를 전체 샘플로 보려면 Office 개발 샘플 및 연습의 Word Controls 샘플을 참조하십시오.

[!참고]

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

사전 요구 사항

이 연습을 완료하려면 다음 구성 요소가 필요합니다.

-

Microsoft Office 개발자 도구를 포함하는 Visual Studio 2012 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.110\).md)을 참조하십시오.
  • Word 2013 또는 Word 2010

프로젝트 만들기

첫 번째 단계에서는 Word 문서 프로젝트를 만듭니다.

새 프로젝트를 만들려면

  • 이름이 My Chart Options인 Word 문서 프로젝트를 만듭니다.마법사에서 새 문서 만들기를 선택합니다.자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기을 참조하십시오.

    Visual Studio의 디자이너에 새 Word 문서가 열리고 My Chart Options 프로젝트가 솔루션 탐색기에 추가됩니다.

문서에 차트 추가

차트를 추가하려면

  1. Visual Studio 디자이너에 호스팅된 Word 문서의 리본 메뉴에서 삽입 탭을 클릭합니다.

  2. 텍스트 그룹에서 개체 삽입 드롭다운 단추를 클릭하고 개체를 클릭합니다.

    개체 대화 상자가 열립니다.

  3. 새로 만들기 탭의 개체 형식 목록에서 Microsoft Graph 차트를 선택한 다음 확인을 클릭합니다.

    문서의 삽입 지점 위치에 차트가 추가되고 몇 가지 기본 데이터가 포함된 데이터시트 창이 표시됩니다.

  4. 데이터시트 창을 닫아 차트에 기본값을 적용하고 문서 안쪽을 클릭하여 차트에서 다른 위치로 포커스를 옮깁니다.

  5. 차트를 마우스 오른쪽 단추로 클릭하고 개체 서식을 클릭합니다.

  6. 개체 서식 대화 상자의 레이아웃 탭에서 사각형을 선택하고 확인을 클릭합니다.

프로젝트에 사용자 정의 컨트롤 추가

문서의 라디오 단추는 기본적으로 동시에 두 개 이상을 사용할 수 없습니다.라디오 단추를 사용자 정의 컨트롤에 추가한 다음 선택 영역을 제어하는 코드를 작성하여 라디오 단추가 제대로 작동하도록 할 수 있습니다.

사용자 정의 컨트롤을 추가하려면

  1. 솔루션 탐색기에서 My Chart Options 프로젝트를 선택합니다.

  2. 프로젝트 메뉴에서 새 항목 추가를 클릭합니다.

  3. 새 항목 추가 대화 상자에서 사용자 정의 컨트롤을 클릭하고 컨트롤 이름을 ChartOptions로 지정한 다음 추가를 클릭합니다.

사용자 정의 컨트롤에 Windows Form 컨트롤을 추가하려면

  1. 디자이너에 사용자 정의 컨트롤이 표시되지 않으면 솔루션 탐색기에서 ChartOptions를 두 번 클릭합니다.

  2. 도구 상자공용 컨트롤 탭에서 첫 번째 Radio Button 컨트롤을 사용자 정의 컨트롤에 끌어 놓고 다음 속성을 변경합니다.

    속성

    이름

    columnChart

    텍스트

    Column Chart

  3. 두 번째 Radio Button을 사용자 정의 컨트롤에 추가하고 다음 속성을 변경합니다.

    속성

    이름

    barChart

    텍스트

    가로 막대형 차트

  4. 세 번째 Radio Button을 사용자 정의 컨트롤에 추가하고 다음 속성을 변경합니다.

    속성

    이름

    lineChart

    텍스트

    Line Chart

  5. 네 번째 Radio Button을 사용자 정의 컨트롤에 추가하고 다음 속성을 변경합니다.

    속성

    이름

    areaBlockChart

    텍스트

    Area Block Chart

참조 추가

문서에서 사용자 정의 컨트롤을 통해 차트에 액세스하려면 프로젝트에 Microsoft.Office.Interop.Graph 어셈블리에 대한 참조가 있어야 합니다.

Microsoft.Office.Interop.Graph 어셈블리에 대한 참조를 추가하려면

  1. 프로젝트 메뉴에서 참조 추가를 클릭합니다.

    참조 추가 대화 상자가 나타납니다.

  2. .NET 탭에서 Microsoft.Office.Interop.Graph를 선택한 다음 확인을 클릭합니다.어셈블리의 14.0.0.0 버전을 선택합니다.

라디오 단추를 선택할 때 차트 스타일 변경

단추가 제대로 작동하도록 하려면 사용자 정의 컨트롤에 대한 공용 이벤트를 만들고 선택 형식을 설정하기 위한 속성을 추가하고 각 라디오 단추의 CheckedChanged 이벤트에 대한 프로시저를 만듭니다.

사용자 정의 컨트롤에 대한 이벤트와 속성을 만들려면

  1. 솔루션 탐색기에서 사용자 정의 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

  2. SelectionChanged 이벤트와 Selection 속성을 만드는 코드를 ChartOptions 클래스에 추가합니다.

    Public Event SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
    Private selectedType As Microsoft.Office.Interop.Graph.XlChartType = _
        Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered
    
    Public Property Selection() As Microsoft.Office.Interop.Graph.XlChartType
        Get
            Return Me.selectedType
        End Get
        Set(ByVal value As Microsoft.Office.Interop.Graph.XlChartType)
            Me.selectedType = value
        End Set
    End Property
    
    public event EventHandler SelectionChanged;
    
    private Microsoft.Office.Interop.Graph.XlChartType selectedType =
        Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered;
    
    public Microsoft.Office.Interop.Graph.XlChartType Selection
    {
        get
        {
            return this.selectedType;
        }
        set
        {
            this.selectedType = value;
        }
    }
    

라디오 단추의 CheckedChange 이벤트를 처리하려면

  1. areaBlockChart 라디오 단추의 CheckedChanged 이벤트 처리기에서 차트 종류를 설정한 다음 이벤트를 발생시킵니다.

    Private Sub areaBlockChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles areaBlockChart.CheckedChanged
    
        If (CType(sender, RadioButton).Checked) Then
    
            Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked
            RaiseEvent SelectionChanged(Me, EventArgs.Empty)
        End If
    End Sub
    
    private void areaBlockChart_CheckedChanged(object sender, EventArgs e)
    {
        if (((RadioButton)sender).Checked)
        {
            this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked;
            if (this.SelectionChanged != null)
            {
                this.SelectionChanged(this, EventArgs.Empty);
            }
        }
    }
    
  2. barChart 라디오 단추의 CheckedChanged 이벤트 처리기에서 차트 종류를 설정합니다.

    Private Sub barChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles barChart.CheckedChanged
    
        If (CType(sender, RadioButton).Checked) Then
    
            Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered
            RaiseEvent SelectionChanged(Me, EventArgs.Empty)
        End If
    End Sub
    
    private void barChart_CheckedChanged(object sender, EventArgs e)
    {
        if (((RadioButton)sender).Checked)
        {
            this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered;
            if (this.SelectionChanged != null)
            {
                this.SelectionChanged(this, EventArgs.Empty);
            }
        }
    }
    
  3. columnChart 라디오 단추의 CheckedChanged 이벤트 처리기에서 차트 종류를 설정합니다.

    Private Sub columnChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles columnChart.CheckedChanged
    
        If (CType(sender, RadioButton).Checked) Then
    
            Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered
            RaiseEvent SelectionChanged(Me, EventArgs.Empty)
        End If
    End Sub
    
    private void columnChart_CheckedChanged(object sender, EventArgs e)
    {
        if (((RadioButton)sender).Checked)
        {
            this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlColumnClustered;
            if (this.SelectionChanged != null)
            {
                this.SelectionChanged(this, EventArgs.Empty);
            }
        }
    }
    
  4. lineChart 라디오 단추의 CheckedChanged 이벤트 처리기에서 차트 종류를 설정합니다.

    Private Sub lineChart_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles lineChart.CheckedChanged
    
        If (CType(sender, RadioButton).Checked) Then
            Me.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers
            RaiseEvent SelectionChanged(Me, EventArgs.Empty)
        End If
    End Sub
    
    private void lineChart_CheckedChanged(object sender, EventArgs e)
    {
        if (((RadioButton)sender).Checked)
        {
            this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers;
            if (this.SelectionChanged != null)
            {
                this.SelectionChanged(this, EventArgs.Empty);
            }
        }
    }
    
  5. C#의 경우 라디오 단추에 대한 이벤트 처리기를 추가해야 합니다.코드를 InitializeComponent에 대한 호출 아래의 ChartOptions 생성자에 추가할 수 있습니다.이벤트 처리기를 만드는 방법에 대한 자세한 내용은 방법: Office 프로젝트에서 이벤트 처리기 만들기를 참조하십시오.

    public ChartOptions()
    {
        InitializeComponent();
    
        areaBlockChart.CheckedChanged += new EventHandler(areaBlockChart_CheckedChanged);
        barChart.CheckedChanged += new EventHandler(barChart_CheckedChanged);
        columnChart.CheckedChanged += new EventHandler(columnChart_CheckedChanged);
        lineChart.CheckedChanged += new EventHandler(lineChart_CheckedChanged);
    }
    

문서에 사용자 정의 컨트롤 추가

솔루션을 빌드하면 새 사용자 정의 컨트롤이 도구 상자에 자동으로 추가됩니다.이 컨트롤을 도구 상자에서 문서로 끌어 놓을 수 있습니다.

문서에 사용자 정의 컨트롤을 추가하려면

  1. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    ChartOptions 사용자 정의 컨트롤이 도구 상자에 추가됩니다.

  2. 솔루션 탐색기에서 ThisDocument.vb 또는 ThisDocument.cs를 마우스 오른쪽 단추로 클릭한 다음 디자이너 보기를 클릭합니다.

  3. ChartOptions 컨트롤을 도구 상자에서 문서로 끌어 놓습니다.

    ChartOptions1이라는 새 컨트롤이 프로젝트에 추가됩니다.

차트 종류 변경

사용자 정의 컨트롤에 선택된 옵션에 따라 차트 종류를 변경하는 이벤트 처리기를 만듭니다.

문서에 표시되는 차트 종류를 변경하려면

  1. ThisDocument 클래스에 다음 이벤트 처리기를 추가합니다.

    Private Sub ChartOptions1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles ChartOptions1.SelectionChanged
    
        Try
            Dim shape As Word.Shape = Me.Shapes.Item(1)
    
            ' Activate the shape.
            shape.Activate()
    
            Dim dataChart As Graph.Chart = CType(shape.OLEFormat.Object, Graph.Chart)
            dataChart.ChartType = Me.ChartOptions1.Selection
    
            ' Deactivate the shape.
            Me.ChartOptions1.Select()
    
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    
    private void ChartOptions1_SelectionChanged(object sender, EventArgs e)
    {
        try
        {
            object index = 1;
            Word.Shape shape = this.Shapes.get_Item(ref index);
    
            // Activate the shape.
            shape.Activate();
    
            Microsoft.Office.Interop.Graph.Chart dataChart = 
                (Microsoft.Office.Interop.Graph.Chart)shape.OLEFormat.Object;
            dataChart.ChartType = this.ChartOptions1.Selection;
    
            // Deactivate the shape.
            this.ChartOptions1.Select();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    
  2. C#의 경우 Startup 이벤트에 사용자 정의 컨트롤에 대한 이벤트 처리기를 추가해야 합니다.

    this.ChartOptions1.SelectionChanged += new EventHandler(ChartOptions1_SelectionChanged);
    

응용 프로그램 테스트

이제 문서를 테스트하여 라디오 단추를 선택할 때 차트의 스타일이 올바르게 업데이트되는지 확인할 수 있습니다.

문서를 테스트하려면

  1. F5 키를 눌러 프로젝트를 실행합니다.

  2. 여러 가지 라디오 단추를 선택합니다.

  3. 선택한 내용에 맞도록 차트 스타일이 변경되는지 확인합니다.

다음 단계

이후에 수행할 수 있는 작업은 다음과 같습니다.

참고 항목

개념

Word를 사용한 연습

Office 문서에서 Windows Forms 컨트롤에 대한 제한 사항

기타 리소스

Office 개발 샘플 및 연습