У меня проблемы с поиском контрольного списка в текстовом поле.Когда у меня есть 1 параметр
ladujZBazy(string mustContains)
Когда я проверял элементы в списке в checkedListBox1 и выполнял поиск некоторых элементов с помощью textBox1, моя предыдущая проверка пропала.
Я добавляю второй параметр в вашу функцию (тип bool)
void ladujZBazy(string mustContains, bool dropIndexes)
, который по умолчанию будет ложным
private void dbopakowania_Load(object sender, EventArgs e)
{
ladujZBazy(null, false);
}
, а затем вызовет событие TextChanged текстового поля как ложное.
private void textBox1_TextChanged(object sender, EventArgs e)
{
ladujZBazy(textBox1.Text, false); //false
}
На этот раз проверенное время не пропало, но дважды скопируйте запись в checklistbox. Когда значение boolean равно true, я проверял элементы в списке в selectedListBox1 и осуществлял поиск некоторых элементов с помощью textBox1. Моя предыдущая проверка пропала.Я хочу, чтобы при проверке и поиске некоторых элементов с помощью textBox1 моя предыдущая проверка не исчезла, и не копируйте запись дважды в контрольный список.Полный код:
namespace Email_Sender
{
public partial class dbopakowania : Form
{
EmailSender emailsender;
public List<List<string>> listOpakowaniaTabela = new List<List<string>>();
public string doZamowienia = "";
List<int> indexes = new List<int>();
string typZgloszenia;
public dbopakowania(EmailSender _emailsender, string _typZgloszenia)
{
InitializeComponent();
this.emailsender = _emailsender; //przechwycenie obiektu EmailSender do lokalnego obiektu tego samego typu
this.typZgloszenia = _typZgloszenia;
if (typZgloszenia == "ZWROT")
{
label1.Text = "Zwróć opakowania:";
btnGetItem.Text = "Zwróć";
this.emailsender.txt_subject.Text = "Zwrot opakowań";
}
else if(typZgloszenia == "ZAMOWIENIE")
{
label1.Text = "Zamów opakowania:";
btnGetItem.Text = "Zamów";
this.emailsender.txt_subject.Text = "Zamówienie opakowań";
}
}
private void dbopakowania_Load(object sender, EventArgs e)
{
ladujZBazy(null, false);
}
private void button2_Click(object sender, EventArgs e)
{
if (label1.Text == "Zamów opakowania:")
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
{
AddValueToZamówienieOpakowan oknoZamowieniaOpakowania_Szczegoly = new AddValueToZamówienieOpakowan(this, indexes[i]);
oknoZamowieniaOpakowania_Szczegoly.ShowDialog();
if (doZamowienia != "")
{
this.emailsender.pozycja++;
this.emailsender.txt_msg.Text += emailsender.pozycja.ToString() + "." + " " + doZamowienia;
//this.emailsender.txt_subject.Clear();
//this.emailsender.txt_subject.Text = "Zamówienie opakowań";
}
}
}
this.Close();
}
else if (label1.Text == "Zwróć opakowania:")
{
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
{
ZwrotOpakowan oknoZamowieniaOpakowania_Szczegoly = new ZwrotOpakowan(this, indexes[i]);
oknoZamowieniaOpakowania_Szczegoly.ShowDialog();
if (doZamowienia != "")
{
this.emailsender.pozycja++;
this.emailsender.txt_msg.Text += emailsender.pozycja.ToString() + "." + " " + doZamowienia;
//this.emailsender.txt_subject.Clear();
//this.emailsender.txt_subject.Text = "Zamówienie opakowań";
}
}
}
this.Close();
}
else
{
MessageBox.Show("Nieoczekiwany Błąd - skontaktuj sie z admin", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btn_close_Click(object sender, EventArgs e)
{
this.Close();
}
void ladujZBazy(string mustContains, bool dropIndexes)
{
if (dropIndexes)
{
checkedListBox1.Items.Clear();
listOpakowaniaTabela.Clear();
indexes.Clear();
}
bazaproduktowDBEntities dc = new bazaproduktowDBEntities();
var c1 = from d in dc.OpakowaniaTabela select d.NazwaOpakowania;
var c2 = from d in dc.OpakowaniaTabela select "(" + d.PartiaOpakowania + ")";
var c3 = from d in dc.OpakowaniaTabela select d.IloscOpakowania;
var c4 = from d in dc.OpakowaniaTabela select d.JednostkaOpakowania;
listOpakowaniaTabela.Add(c1.ToList());
listOpakowaniaTabela.Add(c2.ToList());
listOpakowaniaTabela.Add(c3.ToList());
listOpakowaniaTabela.Add(c4.ToList());
for (int i = 0; i < listOpakowaniaTabela[0].Count; i++)
{
string strToAdd = "";
for (int j = 0; j < listOpakowaniaTabela.Count; j++)
{
strToAdd += " " + listOpakowaniaTabela[j][i] + " ";
}
if (mustContains == null)
{
checkedListBox1.Items.Add(strToAdd);
indexes.Add(i);
}
else if (strToAdd.ToLower().Contains(mustContains.ToLower()))
{
checkedListBox1.Items.Add(strToAdd);
indexes.Add(i);
}
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
ladujZBazy(textBox1.Text, false); //false
}
}
Любое решение?C #