2017-10-02 23 views
-1

ユーザーがフォームに記入して計算するプログラムがあります。ユーザーがサマリーをヒットすると、データに入力したすべてのユーザーが表示されます。より多くのユーザーがデータを入力すると、同じlbl(lblUsers)を使用してサマリーに単純に追加されます。最新の作成済みラベルである最新のエントリを削除することができます。重複したラベルの削除

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace LifeInsurance 
{ 
public partial class frmMain : Form 
{ 
    double commissionRate; 
    double insuranceAmount; 
    double totalAmount; 
    int numberOfCustomers; 
    double totalInsuranceDollars; 
    double totalCommission; 



    private void btnClearAll_Click(object sender, EventArgs e) 
    { 
     lblUsers.Text = ""; 
    } 

    public frmMain() 
    { 
     InitializeComponent(); 
    } 





    private void frmMain_Load(object sender, EventArgs e) 
    { 

    } 

    private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      string firstName = txtFirstName.Text; 
      string lastName = txtLastName.Text; 
      insuranceAmount = int.Parse(txtInsuranceAmount.Text); 
     }catch (Exception) 
     { 
      MessageBox.Show("You must enter all details"); 
     } 
     if(insuranceAmount>= 1000) 
     { 
      commissionRate = 0.005; 
      totalAmount = insuranceAmount * 0.005; 
     } 
     if (insuranceAmount >= 100000) 
     { 
      commissionRate = 0.0010; 
      totalAmount = insuranceAmount * 0.0010; 
     } 
     if (insuranceAmount >= 1000000) 
     { 
      commissionRate = 0.0015; 
      totalAmount = insuranceAmount * 0.0015; 
     } 
     totalInsuranceDollars += totalAmount; 
     totalCommission += commissionRate; 
     numberOfCustomers += 1; 
     lblUsers.Text += "Name: "+txtFirstName.Text +" "+ txtLastName.Text+"   
     "+ "Payout Amount: "+totalAmount+Environment.NewLine; 
     lblUsers.Text += "Total Policies: " + numberOfCustomers+" " + "Total 
     Insurance Dollars Earned: " + totalInsuranceDollars+" " + "Total 
     Commission Earned: " + totalCommission+Environment.NewLine; 
    } 
    private void btnSummary_Click(object sender, EventArgs e) 
    { 
     lblUsers.Visible = true ; 
    } 
    private void btnClear_Click(object sender, EventArgs e) 
    { 

     //remove one label 
    } 

    } 
} 

enter image description here

+0

あなたはラベルがどのように見えるかの例を投稿してもらえますか?または、少なくともテキストがいくつかのエントリの後にどのように見えるのでしょうか? – MAW74656

+0

@ MAW74656はサンプル出力のイメージを追加しました。名前が –

+0

で始まる最後のラベルを削除したいと思います。このような検索と削除は本当に難しいでしょう。私はいくつかのアプローチを提案します。 1)テキストエリアを使用し、削除する代わりに古いアイテムを画面からスクロールさせます。 2)新しいラベルをパネルに追加するたびに、ラベルをループして検索用語を含むラベルを削除することができます。 – MAW74656

答えて

0

私が正しく理解していれば、ユーザーがクリックし、「概要」は正しいことであるとき、あなたのラベルは、すべてが、最後のエントリを表示したい、ごめんなさい!したがって、あなたのスクリーンショットでは3つのエントリーが表示されますが、2つのエントリーしか表示されないようにしたいのですか?

もしそうなら、このことができますかどうかを確認:

public static void btnSummary_Click(object sender, EventArgs e) 
    { 
     string currentText = lblUsers.Text; 
     int positionOfLastEntry = currentText.LastIndexOf("Name:"); 
     string textWithoutLastEntry = currentText.Substring(0, positionOfLastEntry); 
     lblUsers.Text = textWithoutLastEntry; 
     lblUsers.Visible = true; 
    }