2011-12-30 10 views
1

いくつかのクラス作業用のプログラムを作成しても問題ありませんが、リストに挿入された複数ビットの情報の整列に問題があります同じ行のボックス。リストボックス内の複数の結果が印刷のために正しく整列していません

私はそれを印刷すると、見た目が乱雑になり、リストボックスでも乱雑に見えます。

とにかく少し上げてもいいですか?私は喜びとリストビューが私のうちの地獄を混乱させることなくパッドを正しく試しました。ここに私のコードは次のとおりです。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Microsoft.VisualBasic; 
using System.Collections; 

namespace Assignment2 
{ 
    public partial class frmCalculator : Form 
    { 
     bool blnDot = false; 
     double dbAllPoints = 0; 
     double dbAllMoney = 0; 
     public frmCalculator() 
     { 
      InitializeComponent(); 
     } 

     private void frmCalculator_Load(object sender, EventArgs e) 
     { 
      ddbItems.Items.Add("Glass"); 
      ddbItems.Items.Add("Paper"); 
      ddbItems.Items.Add("Beverage Cans"); 
      ddbItems.Items.Add("Tins"); 
      ddbItems.Items.Add("Milk Cartons"); 
      ddbItems.Items.Add("Juice Boxes"); 
      ddbItems.Items.Add("Plastics"); 
      ddbItems.Items.Add("Clothes"); 
     } 

     private void txtInput_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      if ((e.KeyChar < '0' || e.KeyChar > '9') && (e.KeyChar != '.')) 
      { 
       MessageBox.Show("Please input a number!", "Error"); 
       e.Handled = true; 
      } 
      if (e.KeyChar == '.') 
      { 
       if (blnDot == true) { e.Handled = true; } 
       else { blnDot = true; } 
      } 
     } 

     private void txtInput_MouseClick(object sender, MouseEventArgs e) 
     { 
      txtInput.Text = ""; 
     } 

     private void btnCalculate_Click(object sender, EventArgs e) 
     { 
      String strItem = ""; 
      double dbMoney = 0; 
      double dbPoints = 0; 
      int intPoint = 0; 
      double dbWeight = 0; 

      if (((txtInput.Text == "")||(txtInput.Text=="Input the weight")||   (ddbItems.SelectedIndex==0))) 
       { 
        MessageBox.Show("Please input a weight into the textbox and make a selection from the drop down box", "Error"); 
       } 

     else 
     { 
      if (ddbItems.SelectedIndex == 1) 
      { 
       intPoint = 7; 
       strItem = ddbItems.Items[1].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 2) 
      { 
       intPoint = 8; 
       strItem = ddbItems.Items[2].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 3) 
      { 
       intPoint = 10; 
       strItem = ddbItems.Items[3].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 4) 
      { 
       intPoint = 10; 
       strItem = ddbItems.Items[4].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 5) 
      { 
       intPoint = 3; 
       strItem = ddbItems.Items[5].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 6) 
      { 
       intPoint = 3; 
       strItem = ddbItems.Items[6].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 7) 
      { 
       intPoint = 5; 
       strItem = ddbItems.Items[7].ToString(); 
      } 
      if (ddbItems.SelectedIndex == 8) 
      { 
       intPoint = 6; 
       strItem = ddbItems.Items[8].ToString(); 
      } 

      dbWeight = Convert.ToDouble(txtInput.Text); 
      dbPoints = intPoint * dbWeight; 
      dbMoney = dbPoints * 0.01; 
      dbAllPoints = dbAllPoints + dbPoints; 
      dbAllMoney = dbAllMoney + dbMoney; 
      lblTotals.Visible = true; 
      lblTotals.Text = "You have " + dbAllPoints.ToString() + " points, and you have earned £" + dbAllMoney.ToString("0.00"); 
      lstResults.Items.Add(strItem + " " + dbWeight.ToString() + "kg " + dbPoints.ToString() + " points £" + dbMoney.ToString("0.00")); 
      txtInput.Text = "Input the weight"; 
      ddbItems.SelectedIndex = 0; 
      blnDot = false; 
     } 
     } 

    private void btnEnd_Click(object sender, EventArgs e) 
    { 
     frmWelcome frmWelcome = (frmWelcome)Application.OpenForms["frmWelcome"]; 
     frmWelcome.Close(); 
     this.Dispose(); 
    } 

    private void btnReset_Click(object sender, EventArgs e) 
    { 
     DialogResult result; 
     result = MessageBox.Show("Are you sure you want to reset everything?", "Confirm", MessageBoxButtons.YesNo); 
     if (result == DialogResult.No) return; 
     txtInput.Text = "Input the weight"; 
     lstResults.Items.Clear(); 
     ddbItems.SelectedIndex = 0; 
     lblTotals.Text = ""; 
     lblTotals.Visible = false; 
     blnDot = false; 
    } 

    private void btnPrint_Click(object sender, EventArgs e) 
    { 
     int intMax; 
     intMax = lstResults.Items.Count; 
     String[] arrResults = new String[intMax]; 
     int intLoop; 

     for (intLoop = 0; intLoop < intMax; intLoop++) 
     { 
      arrResults[intLoop] = lstResults.Items[intLoop].ToString(); 
     } 

     Array.Sort(arrResults); 
     lstResults.Items.Clear(); 

     for (intLoop = 0; intLoop < intMax; intLoop++) 
     { 
      lstResults.Items.Add(arrResults[intLoop]); 
     } 

     printDocument1.Print(); 
    } 

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     String strLine = ""; 
     int intLoop; 
     Font pfont = new Font("Verdana", 18, GraphicsUnit.Point); 
     int intLine = 75; 

     strLine = "Item     Weight Points Money"; 
     e.Graphics.DrawString(strLine, pfont, Brushes.Black, 75, intLine); 
     strLine = ""; 
     intLine = intLine + 30; 
     intLine = intLine + 30; 

     for (intLoop = 0; intLoop < lstResults.Items.Count; intLoop++) 
     { 
      strLine = strLine +lstResults.Items[intLoop]; 
      e.Graphics.DrawString(strLine, pfont, Brushes.Black, 75, intLine); 
      intLine = intLine + 30; 
      strLine = ""; 
     } 

     intLine = intLine + 30; 
     strLine = lblTotals.Text; 
     e.Graphics.DrawString(strLine, pfont, Brushes.Black, 75, intLine); 
     strLine = ""; 
     intLine = intLine + 30; 
    } 
} 

}

答えて

1

あなたは「列」の情報を表示しようとしているので、あなたが代わりにListBoxDataGridViewコントロールを使用する必要があります。

同様に、印刷するときは、列ごとにDrawStringを実行して、正しく整列させる必要があります。

あなたがやっていることを続行したい場合は、VerdanaではなくCourierのようなモノスペースのフォントを使用し、単語の長さの間のスペースを数えます。

+0

リストにはリストボックスが必要なので、フォントを変更しようとします。 。 padrightを使うのですか、ドロップダウンボックスに項目を追加するときにスペースを手動で挿入するだけですか? –

+0

@HollyMarieBatchelor、はい、PadRightが機能します。 "列"が文字列の長さから保持する文字の最大数を減算します。 – LarsTech

+0

これは夢の作品ですね。 –

関連する問題