Ernie_1963 Ответов: 3

Как заполнить 7 текстовых полей данными из списка или словаря ?


Я работаю над проектом, где при загрузке формы есть 7 текстовых полей с соответствующими метками. Когда форма загружается, мне нужно заполнить 1-ю строку данных из списка или словаря в текстовые поля. Затем у меня есть 4 кнопки для того, чтобы циклически перебирать другие строки данных в списке/словаре.

Что я уже пробовал:

Я очень новичок в программировании и еще не очень много пробовал. Я искал примеры или учебные пособия, но пока не нашел именно то, что мне нужно.

[no name]

7 текстовых полей, разделяющих "1-ю строку списка"? Ладно ... с какой частью у тебя проблемы? yourTextbox.Text = someString? yourTextbox.Текст = списке "мой список" [индекс]?
"Я очень новичок в программировании", хорошо, тогда возьмите себе приличную книгу по основному программированию Windows Forms и поработайте над ней.
"я еще не нашел точно то, что мне нужно", и это очень редко случается. Если вы не знаете, как что-то сделать, вы находите что-то близкое и изменяете его.

Graeme_Grant

Пожалуйста, поделитесь своим кодом, чтобы мы могли лучше понять, что вы пытаетесь сделать.

Чтобы обновить свой вопрос дополнительной информацией, нажмите на кнопку Улучшить вопрос.

3 Ответов

Рейтинг:
2

Mehedi Shams

Привет Member 13029812,

Простое решение этой проблемы заключается в следующем:

1) цикл через все элементы управления формы.
2) Посмотрите, является ли это текстовым полем. Если это так, то измените текст на первый элемент списка..

List<string> MyList = new List<string>();
MyList.Add("text 1");
MyList.Add("text 2");

foreach (Control Ctl in Controls)
    if (Ctl is TextBox)
        (Ctl as TextBox).Text = MyList[0];
Пожалуйста, погуглите о том, как это и как работает.


Рейтинг:
10

Ernie_1963

Это то, что у меня есть для списка, и у меня также есть словарь, как вы можете видеть.

public static List<employee> GetEmployeesList()
    {
      List<employee> employees = new List<employee>();
      employees.Add(new Employee("Duane", "Wales", "Taber", "ewales@shaw.ca", "869-9681", "$55,000", "Administration"));
      employees.Add(new Employee("Lori", "Wales", "Taber", "llwales@shaw.ca", "869-9682", "$75,000", "Administration"));
      employees.Add(new Employee("Bianca", "Wales", "Calgary", "bianca@shaw.ca", "968-9677", "$95,400", "Finances"));
      employees.Add(new Employee("Smokey", "Wales", "Barnwell", "smoke@telus.net", "555-9651", "$105,000", "Engineering"));
      employees.Add(new Employee("Mike", "Wales", "Medford", "mikew@global.net", "541-9681", "$63,000", "Sales"));
      employees.Add(new Employee("Steven", "Wales", "Portland", "wales_89@global.us", "552-8569", "$75,000", "Sales"));
      return employees;
    }

    public static Dictionary<int, Employee> GetEmployeeDictionary()
    {
      Dictionary<int, Employee> employees = new Dictionary<int, Employee>();
      employees.Add(1, new Employee("Duane", "Wales", "Taber", "ewales@shaw.ca", "869-9681", "$55,000", "Administration"));
      employees.Add(2, new Employee("Lori", "Wales", "Taber", "llwales@shaw.ca", "869-9682", "$75,000", "Administration"));
      employees.Add(3, new Employee("Bianca", "Wales", "Calgary", "bianca@shaw.ca", "968-9677", "$95,400", "Finances"));
      employees.Add(4, new Employee("Smokey", "Wales", "Barnwell", "smoke@telus.net", "555-9651", "$105,000", "Engineering"));
      employees.Add(5, new Employee("Mike", "Wales", "Medford", "mikew@global.net", "541-9681", "$63,000", "Sales"));
      employees.Add(6, new Employee("Steven", "Wales", "Portland", "wales_89@global.us", "552-8569", "$75,000", "Sales"));

      return employees;
И это текстовые поля, которые я пытаюсь заполнить, а затем после этого у меня есть кнопки для перехода к следующей записи, предыдущей, следующей и последней
private void uxfirstName_TextChanged(object sender, EventArgs e)
{

}

private void uxlastName_TextChanged(object sender, EventArgs e)
{

}

private void uxCity_TextChanged(object sender, EventArgs e)
{

}

private void uxEmail_TextChanged(object sender, EventArgs e)
{

}

private void uxPhone_TextChanged(object sender, EventArgs e)
{

}

private void uxSalary_TextChanged(object sender, EventArgs e)
{

}

private void uxDepartment_TextChanged(object sender, EventArgs e)
{

}
У меня есть Visual C# 2012 от Wrox, но либо я еще не совсем понимаю, либо не вижу подходящего примера.


PIEBALDconsult

Это не ответ; пожалуйста, используйте "улучшить вопрос", чтобы добавить это к вопросу.

Graeme_Grant

Согласитесь,это не место здесь и не решение.

Рейтинг:
1

Graeme_Grant

Я не собирался этого делать но это укажет вам правильное направление:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WFDataList
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            employees = GetEmployeesList();
            SetButtonState();
            SetFields();
        }

        private int index = 0;
        private List<Employee> employees { get; set; }

        private List<Employee> GetEmployeesList()
        {
            return new List<Employee>
            {
                new Employee("Duane", "Wales", "Taber", "ewales@shaw.ca", "869-9681", "$55,000", "Administration"),
                new Employee("Lori", "Wales", "Taber", "llwales@shaw.ca", "869-9682", "$75,000", "Administration"),
                new Employee("Bianca", "Wales", "Calgary", "bianca@shaw.ca", "968-9677", "$95,400", "Finances"),
                new Employee("Smokey", "Wales", "Barnwell", "smoke@telus.net", "555-9651", "$105,000", "Engineering"),
                new Employee("Mike", "Wales", "Medford", "mikew@global.net", "541-9681", "$63,000", "Sales"),
                new Employee("Steven", "Wales", "Portland", "wales_89@global.us", "552-8569", "$75,000", "Sales")
            };
        }

        private void SetButtonState()
        {
            butPrevious.Enabled = index > 0 && employees.Count > 0;
            butNext.Enabled =  employees.Count > 0 && index < employees.Count - 1;
        }

        private void SetFields()
        {
            var employee = employees[index];
            uxfirstName.Text = employee.FirstName;
            uxlastName.Text = employee.LastName;
            uxCity.Text = employee.City;
            uxEmail.Text = employee.Email;
            uxPhone.Text = employee.Phone;
            uxDepartment.Text = employee.Department;
        }

        private void OnButtonClick(object sender, EventArgs e)
        {
            if (sender == butNext && index < employees.Count - 1)
            {
                index++;
            }
            if (sender == butPrevious && index > 0)
            {
                index--;
            }
            SetFields();
            SetButtonState();
        }
    }

    public class Employee
    {
        public Employee()
        {

        }

        public Employee(string firstName, string lastName, string city, string email, string phone, string salary, string department)
        {
            FirstName = firstName;
            LastName = lastName;
            City = city;
            Email = email;
            Phone = phone;
            Salary = salary;
            Department = department;
        }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string City { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string Salary { get; set; }
        public string Department { get; set; }
    }
}