Нахождение всех средств управления в Панели ASP.NET?

Измените объект, переданный функции с Chart на полный ChartObject, например:

Private Sub HideEmptyCharts()
    Dim wksCharts As Worksheet
    Dim objCO As ChartObject

    Set wksCharts= ThisWorkbook.Sheets("Report output")
    For Each objCO In wksCharts.ChartObjects
        objCO.Visible = True
        If IsChartEmpty(objCO) Then objCO.Visible = False
    Next objCO
End Sub


Private Function IsChartEmpty(co As ChartObject) As Boolean
    Dim i As Integer
    Dim j As Integer
    Dim objSeries As Series
    For i = 1 To co.Chart.SeriesCollection.Count
        Set objSeries = co.Chart.SeriesCollection(i)
        For j = 1 To UBound(objSeries.Values)
            If objSeries.Values(j) <> 0 Then
                IsChartEmpty = False
                Exit Function
            End If
        Next j
    Next i
    IsChartEmpty = True
End Function
8
задан mdb 10 November 2008 в 11:26
поделиться

4 ответа

Это сводится к перечислению всех средств управления в иерархии управления:

    IEnumerable<Control> EnumerateControlsRecursive(Control parent)
    {
        foreach (Control child in parent.Controls)
        {
            yield return child;
            foreach (Control descendant in EnumerateControlsRecursive(child))
                yield return descendant;
        }
    }

Можно использовать его как это:

        foreach (Control c in EnumerateControlsRecursive(Page))
        {
            if(c is TextBox)
            {
                // do something useful
            }
        }
28
ответ дан 5 December 2019 в 05:13
поделиться

Depeding, на которой библиотеке UI или языке Вы используете, контейнерные средства управления, такие как панели, ведут список дочерних элементов управления. Чтобы протестировать, если форма/страница имеет какие-либо данные, необходимо рекурсивно искать каждую панель средства управления вводом данных, такие как текстовые поля. Затем протестируйте, если какие-либо из средств управления вводом данных содержат значения кроме значения по умолчанию.

Простые решения состояли бы в том, чтобы реализовать класс наблюдателя, который присоединяет к измененным событиям Ваших средств управления данными. Если наблюдатель инициирован затем, Ваша страница имеет изменения. Необходимо будет учесть действия, такие как изменение и затем возвращающиеся данные.

0
ответ дан 5 December 2019 в 05:13
поделиться

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

foreach (Control c in MyPanel.Controls) 
{
   if (c is Textbox) {
        // do something with textbox
   } else if (c is Checkbox) {
        /// do something with checkbox
   }
}

Если Вам вложат их внутри, то Вам будет нужна функция, которая делает это рекурсивно.

4
ответ дан 5 December 2019 в 05:13
поделиться

Решение очень похоже на решение Cristian, которое использует рекурсию и обобщения для поиска любого элемента управления на странице (вы можете указать элемент управления, с которого следует начать поиск).

http: // intrepidnoodle .com / article / 24.aspx

0
ответ дан 5 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: