2016-11-15 3 views
0

私はWindowsフォームアプリケーションを開発しています。このアプリケーションでは、多くのラベルを含む1つのパネルを使用しています。彼らはドラッグアンドドロップの性質を持っています。ユーザーがドラッグ&ドロップすると、ラベルがドラッグ&ドロップされます。 最後に、印刷ボタンをクリックすると印刷されます。Windowsフォームアプリケーションでのラベルの印刷

しかし、私はラベルのリストを使用しています。私は空白のシートを取得しています。

private void printDocument1_PrintPage(object sender, 
System.Drawing.Printing.PrintPageEventArgs e) 
     { 
      List<Label> lbls = this.Controls.OfType<Label>().ToList(); 
      foreach (var lbl in lbls) 
      { 
       e.Graphics.DrawString(lbl.Text, 
      new Font(comboBox1.SelectedItem.ToString(), Int32.Parse(comboBox2.SelectedItem.ToString()), FontStyle.Bold), Brushes.Black, lbl.Left, lbl.Top); 
      } 

答えて

0

あなたには2つの問題があります。

まず、ブレークポイントを設定し、this.Controls.OfType<Label>().ToList()に実際に項目があることを確認します。表示されない場合は、フォームではなくパネルの子コントロールを探すために変更する必要があります。

第2に、印刷するページのサイズがフォームと異なり、余白があります。 PrintPageEventArgs.MarginBoundsは、マージンの大きさと大きさを教えてくれます。 PrintPageEventArgs.PageBoundsページの大きさを教えてくれます。マージンの内側に必ず描画してください。何かが余白の外に引き出された場合、おそらく印刷されません。それがページの外にあれば、100%確実に印刷されません。

+0

あなたの提案に感謝します。私は両方の方法で試してみます – sudhakar

+0

リスト

+0

私は上記のコードを使用しています。パネルの外側にあるすべてのラベルがリストに追加されます。しかし、私はパネル内にあるラベルを追加したい – sudhakar

関連する問題