2014-09-20 86 views
0

所以我在使用C#表单时遇到了一些麻烦。我创建了一个客户名单,其中存储了名称,郊区和银行账户余额。使用下一个和上一个按钮我需要能够让用户浏览列表中的当前5个对象。我的计划是这样做的,当用户点击按钮时,文本框将填充相关信息。客户和其他细节是按钮的原因是后来我需要能够更新存储在这些字段中的信息,所以我认为这样做的好方法是擦除文本框中已有的内容,输入新的信息,然后按按钮进行更新。使用下一个和上一个按钮浏览列表

不管怎么说,我的主要问题是,我需要用我的视图按钮在我的列表中移动

这是我的形式看起来像:

enter image description here

我目前的形式代码是这样的:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     Customer c1 = new Customer("Sibel Yilmaz", "Wollongong", 2500, 3000, 5000); 
     Customer c2 = new Customer("John Doe", "Figtree", 2547, 2500, 3655); 
     Customer c3 = new Customer("Mariah Moore", "Coniston", 2500, 7000, 36000); 
     Customer c4 = new Customer("Jessica Blackshaw", "Bellambi", 3500, 6000, 4750); 
     Customer c5 = new Customer("Suzan Yilmaz", "Wollongong", 2500, 2000, 47110); 

     List<Customer> customers = new List<Customer>(); 

     customers.Add(c1); 
     customers.Add(c2); 
     customers.Add(c3); 
     customers.Add(c4); 
     customers.Add(c5); 
    } 

    private void Form1_Load(object sender, EventArgs e) { } 
    private void button2_Click(object sender, EventArgs e) { } 
    private void button6_Click(object sender, EventArgs e) { } 
    private void textBox4_TextChanged(object sender, EventArgs e) { } 
    private void Customer_Click(object sender, EventArgs e) { } 
} 

而且我Customer类:

public class Customer 
{ 
    protected string name; 
    protected string suburb; 
    protected int postcode; 
    protected double credit_balance; 
    protected double saving_balance; 

    public Customer(string name, string suburb, int postcode, double credit_balance, 
        double saving_balance) 
    { 
     this.name = name; 
     this.suburb = suburb; 
     this.postcode = postcode; 
     this.credit_balance = credit_balance; 
     this.saving_balance = saving_balance; 
    } 

    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    public string Suburb 
    { 
     get { return suburb; } 
     set { suburb = value; } 
    } 

    public int Postcode 
    { 
     get { return postcode; } 
     set { postcode = value; } 
    } 

    public double Credit_Balance 
    { 
     get { return credit_balance; } 
     set { credit_balance = value; } 
    } 

    public double Savinig_Balance 
    { 
     get { return saving_balance; } 
     set { saving_balance = value; } 
    } 
} 

请帮助我,让我知道什么是最好的方式去做这件事。

+1

数据绑定是一种方式。 – terrybozzio 2014-09-20 15:50:30

回答

3

您需要做的第一件事是让您的客户列表具有课程级别的可见性,以便您可以在按钮点击事件中访问它。

public partial class Form1 : Form 
{ 
    int index = 0; 
    List<Customer> customers = new List<Customer>(); 
    public Form1() 
    { 
     ... The remainder of your Constructor code 

一旦你这样做,你应该可以做这样的事情。

private void next_Click(object sender, EventArgs e) 
{ 
    if (index < customers.Count - 1) 
    { 
     index += 1; 
     textBox1.Text = customers[index].Name; 

     ... 
    } 
} 

private void previous_Click(object sender, EventArgs e) 
{ 
    if (index > 0) 
    { 
     index -= 1; 
     textBox1.Text = customers[index].Name; 

     ... 
    } 
} 
+1

这工作得很好!非常感谢! – 2014-09-20 16:36:11

+1

不客气。 – 2014-09-20 16:36:37

3

使用数据绑定,如果你需要更改一些字段的内容,你可以使用该按钮来更新或简单地设置DataSourceUpdateMode像我一样在这里OnPropertyChange和每次更改文本中的一个文本框它将更新数据源(在这种情况下是List)。您可以分别定义Binding对象,然后将其添加到textbox.DataBindings,以便您可以对其进行格式化和解析,但这里我直接将它们添加用于演示目的:

List<Customer> customers; 

public Form1() 
{ 
    InitializeComponent(); 

    //you could add the Customers directly to the add method of the list. 
    Customer c1 = new Customer("Sibel Yilmaz", "Wollongong", 2500, 3000, 5000); 
    Customer c2 = new Customer("John Doe", "Figtree", 2547, 2500, 3655); 
    Customer c3 = new Customer("Mariah Moore", "Coniston", 2500, 7000, 36000); 
    Customer c4 = new Customer("Jessica Blackshaw", "Bellambi", 3500, 6000, 4750); 
    Customer c5 = new Customer("Suzan Yilmaz", "Wollongong", 2500, 2000, 47110); 

    customers = new List<Customer>(); 

    customers.Add(c1); 
    customers.Add(c2); 
    customers.Add(c3); 
    customers.Add(c4); 
    customers.Add(c5); 

    textBox1.DataBindings.Add("Text", customers, "Name",true,DataSourceUpdateMode.OnPropertyChanged); 
    textBox2.DataBindings.Add("Text", customers, "Suburb", true, DataSourceUpdateMode.OnPropertyChanged); 
    textBox3.DataBindings.Add("Text", customers, "Postcode", true, DataSourceUpdateMode.OnPropertyChanged); 
    textBox4.DataBindings.Add("Text", customers, "Credit_Balance", true, DataSourceUpdateMode.OnPropertyChanged); 
    textBox5.DataBindings.Add("Text", customers, "Savinig_Balance", true, DataSourceUpdateMode.OnPropertyChanged); 
} 

然后在您的上一个和下一个按钮中:

private void PreviousBtn_Click(object sender, EventArgs e) 
{ 
    --this.BindingContext[this.customers].Position; 
} 

private void NextBtn_Click(object sender, EventArgs e) 
{ 
    ++this.BindingContext[this.customers].Position; 
} 
相关问题