次の方法で共有


チュートリアル: 請求書の印刷

LightSwitch のアプリケーションから直接出力できませんが印刷を Silverlight のユーザー コントロールを作成し、実行する LightSwitch の画面に追加します。このチュートリアルでは、Silverlight のユーザー コントロールを作成し、フォームのカスタム コントロールとして使用して、請求書を印刷する方法を示します。

LightSwitch のアプリケーションを作成します。

最初に、貴社との LightSwitch の簡単なアプリケーションを作成し、これらを表示するには、エンティティとリストと詳細の画面を並べ替えます。

アプリケーションを作成するには

  1. メニュー バーで [ファイル][新規][プロジェクト] の順にクリックします。

  2. [新しいプロジェクト] のダイアログ ボックスで、[LightSwitch] のノードを展開し、[LightSwitch アプリケーション (Visual Basic)][LightSwitch アプリケーション (Visual C#)] テンプレートを選択します。

  3. [名前] のテキスト ボックスに、LightSwitchInvoiceを入力し、を [OK] のボタンをクリックします。

  4. [LightSwitchInvoice Designer] のペインで、[新しいテーブルの作成] のリンクを選択します。

  5. [プロパティ] のペインで、[顧客]に [名前] のプロパティの値を設定します。

  6. Entity Designer で、を <Add Property> 選択し、[名前]を入力します。

  7. [種類] の列で、String のデータ型を選択します。

  8. ツール バーで、[新しいテーブル] のボタンをクリックします。

  9. [プロパティ] のペインで、[順序]に [名前] のプロパティの値を設定します。

  10. Entity Designer で、を <Add Property> 選択し、OrderItemを入力します。

  11. [種類] の列で、String のデータ型を選択します。

  12. Entity Designer で、を <Add Property> 選択し、OrderAmountを入力します。

  13. [種類] の列で、Money のデータ型を選択します。

  14. ツール バーで、[リレーションシップ] のボタンをクリックします。

    [新しいリレーションシップの追加] ダイアログ ボックスが表示されます。

  15. [名前] の行の には の列で、[顧客] を選択し、[OK] のボタンをクリックします。

  16. [ソリューション エクスプローラー] では、[Customers] のショートカット メニューを開き、[開く] を選択します。

  17. Entity Designer で、を <Add Property> 選択し、OrderTotalを入力します。

  18. [種類] の列で、Money のデータ型を選択します。

  19. [プロパティ] のペインで、[計算されたプロパティである] のチェック ボックスをオンにし、[メソッドの編集] のリンクを選択します。

  20. コード エディターで、OrderTotal_Compute のメソッドの次のコードを追加します:

    result = (From items In Orders).Sum(Function(X) X.OrderAmount)
    
    result = (from items in Orders select items).Sum(X => X.OrderAmount);
    
  21. [ソリューション エクスプローラー] では、[画面] のショートカット メニューを開き、[画面の追加] を選択します。

  22. [新しい画面の追加] のダイアログ ボックスで、[一覧および詳細画面] テンプレートを選択します。

  23. [画面データ] の一覧で、[Customers] を選択します。

  24. [Customer Orders] のチェック ボックスをオンにし、[OK] のボタンをクリックします。

  25. メニュー バーで、[デバッグ][デバッグ開始] の順に選択します。

  26. [Customers] のツール バーで、[追加] のボタンをクリックします。

    [新しい受注の追加] のダイアログ ボックスが表示されます。

  27. [名前] のテキスト ボックスに、デレック Snyderを入力し、を [OK] のボタンをクリックします。

  28. [注文] のツール バーで、[追加] のボタンをクリックします。

  29. [注文品目] のテキスト ボックスに、ハンマーを入力します。

  30. [注文金額] のテキスト ボックスに、9.95を入力し、を [OK] のボタンをクリックします。

  31. [注文] のツール バーで、[追加] のボタンをクリックします。

  32. [注文品目] のテキスト ボックスに、してを入力します。

  33. [注文金額] のテキスト ボックスに、4.50を入力し、を [OK] のボタンをクリックします。

  34. [アプリケーション] のツール バーで、[保存] を選択し、アプリケーションを閉じます。

Silverlight のユーザー コントロールを作成します。

次に、印刷機能を提供する Silverlight のユーザー コントロールを作成します。

ユーザー コントロールを作成するには

  1. メニュー バーで [ファイル] をクリックし、[追加] を選択し、[新しいプロジェクト] をクリックします。

  2. [新しいプロジェクト] のダイアログ ボックスで、[Visual Basic][Visual C#] のノードを展開し、[Silverlight] のノードを選択し、を [Silverlight クラス ライブラリ] テンプレートを選択します。

  3. [名前] のテキスト ボックスに、[PrintControl]を入力し、を [OK] のボタンをクリックします。

  4. [Silverlight クラス ライブラリの追加] のダイアログ ボックスで、[Silverlight 5] が選択されていることを確認し、次に [OK] のボタンを選択します。

  5. [ソリューション エクスプローラー] では、[Class1.vb] または [Class1.cs] のショートカット メニューを開き、[削除] を選択します。

  6. [PrintControl] のショートカット メニューを開き、[追加] を選択し、を [新しいアイテム] を選択します。

  7. [新しい項目の追加] のダイアログ ボックスで、[Silverlight ユーザー コントロール] テンプレートを選択します。

  8. [名前] のテキスト ボックスに、[納品書]を入力し、を [OK] のボタンをクリックします。

  9. メニュー バーで、[ビュー][ツールボックス] を選択します。

  10. [ツールボックス] のペインで、[コモン Silverlight コントロール] のノードを展開し、[データグリッド] のコントロールを選択し、デザイン サーフェイスに追加します。

  11. コード エディターで、次のコードで既存の XAML コードに置き換えます。:

    <UserControl
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="https://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sdk="https://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="PrintControl.Invoice"
        mc:Ignorable="d" d:DesignWidth="474" Height="278">
    <StackPanel>
    
            <Button Content="Print" x:Name="btnPrint" Click="PrintButton_Click" />
    
            <Border BorderThickness="1" BorderBrush="#FF504F4F">
    
    
    
                <Grid x:Name="LayoutRoot">
    
                    <Grid.ColumnDefinitions>
    
                        <ColumnDefinition Width="0.02*"/>
    
                        <ColumnDefinition Width="0.2*"/>
    
                        <ColumnDefinition Width="0.5*"/>
    
                        <ColumnDefinition Width="0.1*"/>
    
                        <ColumnDefinition Width="0.18*"/>
    
                    </Grid.ColumnDefinitions>
    
                    <Grid.RowDefinitions>
    
                        <RowDefinition Height="0.053*"/>
    
                        <RowDefinition Height="0.08*"/>
    
                        <RowDefinition Height="0.533*"/>
    
                        <RowDefinition Height="0.133*"/>
    
                        <RowDefinition Height="0.2*"/>
    
                    </Grid.RowDefinitions>
    
                    <sdk:DataGrid ItemsSource="{Binding Screen.Orders, Mode=OneWay}"
    
                AutoGenerateColumns="False" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" >
    
                        <sdk:DataGrid.Columns>
    
                            <sdk:DataGridTextColumn Binding="{Binding OrderItem}" CanUserSort="True" DisplayIndex="0"
    
                Header="Order Item" MaxWidth="100" MinWidth="50" Visibility="Visible" Width="Auto"/>
    
                            <sdk:DataGridTextColumn Binding="{Binding OrderAmount, StringFormat=C}" CanUserSort="True" DisplayIndex="1"
    
                Header="Order Amount" MaxWidth="100" MinWidth="50" Visibility="Visible" Width="Auto"/>
    
                        </sdk:DataGrid.Columns>
    
                    </sdk:DataGrid>
    

    この XAML コードは、コントロールのレイアウトを定義します。<sdk:DataGrid.Columns> のセクションが表示されます。が DataGrid の各列で指定します (この場合、Customers のエンティティの OrderAmount の OrderItem フィールドとフィールド)。

    ユーザー コントロールは、次の図のようになります。:

    Silverlight ユーザー コントロール

  12. [ソリューション エクスプローラー] では、[Invoice.xaml] のノードを展開して、[Invoice.xaml.vb] または [Invoice.xaml.cs] のショートカット メニューを開き、[開く] を選択します。

  13. コード エディターで、次のコードで既存のコードに置き換えます。:

    Imports System.Windows.Printing
    
    Partial Public Class Invoice
        Inherits UserControl
        Private WithEvents pd As PrintDocument
        Public Sub New()
            InitializeComponent()
            pd = New PrintDocument
            InvoiceDate.Text = DateTime.Today.ToShortDateString()
        End Sub
        Private Sub PrintButton_Click(ByVal sender As Object, _
                ByVal e As RoutedEventArgs)
            pd.Print(String.Format("Invoice Date: {0}", DateTime.Today.ToShortDateString()))
        End Sub
        Private Sub pd_PrintPage(ByVal sender As Object, _
                ByVal e As PrintPageEventArgs) Handles pd.PrintPage
            e.PageVisual = LayoutRoot
        End Sub
    
    End Class
    
    using System.Windows.Printing;
    
    public partial class Invoice : UserControl
    {
    private PrintDocument withEventsField_pd;
    private PrintDocument pd {
    get { return withEventsField_pd; }
    set {
    if (withEventsField_pd != null) {
    withEventsField_pd.PrintPage -= pd_PrintPage;
    }
    withEventsField_pd = value;
    if (withEventsField_pd != null) {
    withEventsField_pd.PrintPage += pd_PrintPage;
    }
    }
    }
    public Invoice()
    {
    InitializeComponent();
    pd = new PrintDocument();
    InvoiceDate.Text = DateTime.Today.ToShortDateString();
    }
    private void PrintButton_Click(object sender, RoutedEventArgs e)
    {
    pd.Print(string.Format("Invoice Date: {0}", DateTime.Today.ToShortDateString()));
    }
    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {
    e.PageVisual = LayoutRoot;
    }
    }
    
  14. メニュー バーで、[ビルド][BuildSolution] を選択します。

ユーザー コントロールを実装します。

最後に、LightSwitch の画面にユーザー コントロールをテストします。

ユーザー コントロールを追加するには

  1. [ソリューション エクスプローラー] では、[CustomersListDetail] の画面のショートカット メニューを開き、[開く] を選択します。

  2. デザイナー画面で、[行のレイアウト] | Customer Details のノードを選択します。

  3. ツール バーで、[レイアウト項目の追加] のリストを開き、[カスタム コントロール] を選択します。

  4. [カスタム コントロールの追加] のダイアログ ボックスで、[参照の追加] のボタンをクリックします。

  5. [参照マネージャー] のダイアログ ボックスで、[ソリューション] のノードを展開し、[PrintControl] のチェック ボックスをオンに [OK] のボタンをクリックします。

  6. [カスタム コントロールの追加] のダイアログ ボックスで、[PrintControl] のノードを展開し、[納品書] のコントロールを選択し、を [OK] のボタンをクリックします。

  7. 画面エディターで、[カスタム コントロール] | Screen Content ノードを選択し、ドラッグして Data Grid | [注文] のノードとして表示されます。

  8. [プロパティ] のペインで、[納品書]に [名前] のプロパティの値を設定します。

  9. [サイズ変更] のグループで、[水平方向の配置][垂直方向の配置][伸縮] のオプション ボタンを選択します。

  10. メニュー バーで、アプリケーションを実行するには [デバッグ][デバッグの開始] を選択します。

  11. 実行中のアプリケーションでは、[印刷] のボタンをクリックします。

    Windows [印刷] のダイアログ ボックスが表示されたら、プリンターを選択できます。

参照

その他の技術情報

LightSwitch でのレポートと印刷