nast90210 wrote > Собственно в событиях dw_StartLoadDP dw_StartDW dw_StepDW и dw_FinishDW я > и хочу изменять значения прогрессбара в каждой строчке в зависимости от > currentFileIndex.
Так как ты запланировал работать не будет. Ты не можешь обратится к конкретному cellRenderer, так как он всего один на се ячейки. Устанавливая для него значения Value ты устанавливаешь это значение для всех ячеек, которые будут нарисованы после. Я не смог до конца вникнуть во весь код. Но основное понятно. Я не вижу где ты хранишь прогресс для каждого файла. Но ты можешь пойти 2мя путями, смотри какой тебе удобнее. Первый хранить всю необхоимую инфу в ListStore. И просто настроить рендер. При изменении ListStore он сам все перерисует. Куски которые нужно поменять (Первый способ): код скорее будет не рабочи, просто что бы показать логику. //Добавил 3 "колонки" с процентом выполнения и текстом на прогрес баре, и состоянием visible detalListStore = new Gtk.ListStore (typeof (int), typeof (string), typeof(object), typeof (int), typeof (string), typeof (bool)); // Так формируем рендер. Gtk.TreeViewColumn statusColumn = new Gtk.TreeViewColumn (); statusColumn.Title = "Статус"; Gtk.CellRendererProgress statusCell = new Gtk.CellRendererProgress (); // statusCell.Visible = false; statusColumn.PackStart(statusCell, true); statusColumn.AddAttribute(statusCell, "value", 3); statusColumn.AddAttribute(statusCell, "text", 4); statusColumn.AddAttribute(statusCell, "visible", 5); // Тут не уверен что название правильное, если не будет работать надо смотреть как это свойство называется на с в оригинальной библиотеке. statusColumn.Resizable = true; //Меняем значение конкретной ячейки так, protected void dw_StartDW(object sender, DetalWorker.StarDWEventArg e) { Application.Invoke(delegate { if (e.name == "dp") statusbar1.Push(1, "Чистка..."); else if (e.name == "dm") statusbar1.Push(1, "Парсинг..."); TreeIter iter; if(!detalListStore.GetIterFirst(out iter)) return false; do { if((int)detalListStore.GetValue(iter, 0) == currentFileIndex + 1) { detalListStore.SetValue(iter, 3, 0); // вместо cell.Value = 0; detalListStore.SetValue(iter, 4, "asfas"); // вместо cell.Text = "asfas"; detalListStore.SetValue(iter, 3, true); // вместо cell.Visible = true; } } while (detalListStore.IterNext (ref iter)); }); } В dw_StepDW аналогично можно устанавливать значение процентов для конкретной ячеки. detalListStore.SetValue(iter, 3, 50); // 50 процентов Второй способ следующим письмом. -- View this message in context: http://mono.1490590.n4.nabble.com/progressbar-on-a-treeview-tp4667178p4667184.html Sent from the Mono - Gtk# mailing list archive at Nabble.com. _______________________________________________ Gtk-sharp-list maillist - Gtk-sharp-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/gtk-sharp-list