/// <summary> /// Метод вызова и отображения резальтатов поиска аналогов. /// </summary> /// <param name="findAConnection"></param> /// <param name="route"></param> /// <param name="valKey"></param> private static void ConclusionOfAnalogsInTheTable(FindAConnection findAConnection, Route route, Dictionary <string, Dictionary <Vertex, Vertex> > valKey) { int count = 0; if (valKey.Count != 0) { foreach (var i in valKey) { DataGridView data = new DataGridView(); //экземпляр для отображения маршрутов в таблице route.tabControl1.TabPages.Add(i.Key); //добавление название вкладки текущего маршрута route.TableCallSettings(data, count); foreach (var j in i.Value) { data.Rows.Add(j.Key.Item + " -> " + j.Value.Item); //добавление в таблицу шагов текущего маршрута } count++; } route.ShowDialog(findAConnection); } else { MessageBox.Show($"Искомый товар «{GetConvertedItem(findAConnection.textBox3.Text, findAConnection.textBox4.Text)}» " + $"не найден за «{(int)findAConnection.numericUpDown1.Value}» шагов"); } }
/// <summary> /// Кнопка поиска аналогов товара /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button4_Click(object sender, EventArgs e) { Graph graph = new Graph(); FindAConnection findAConnection = new FindAConnection(); DialogResult result = findAConnection.ShowDialog(this); if (result == DialogResult.Cancel) { return; } //цикл для добавления элементов в узлы, и эти же узлы добавляются по сторонам ребра и их вес, который является "доверие" в таблице foreach (var v in db.Products.Local.ToBindingList()) { graph.Add(GetConvertedItem(v.Article1, v.Manufacturer1), GetConvertedItem(v.Article2, v.Manufacturer2), v.Trust); } Route route = new Route(); //создание экземпляра окна с отображением маршрутов с аналогами //Метод поиска аналогов, если возвращаемый список пуст, то товар либо не найден, либо его нет в таблице Dictionary <string, Dictionary <Vertex, Vertex> > valKey = graph.BFS(GetConvertedItem(findAConnection.textBox1.Text, findAConnection.textBox2.Text), GetConvertedItem(findAConnection.textBox3.Text, findAConnection.textBox4.Text), (int)findAConnection.numericUpDown1.Value); ConclusionOfAnalogsInTheTable(findAConnection, route, valKey); }