Compartilhar via


Como: Responder a data seleção in um calendário controle de servidor Web

Se o controle Calendar da propriedade SelectionMode for definida como algo diferente None, o usuário pode selecionar um dia ou um intervalo de datas.Você pode detectar e responder à escolha do usuário.

Para responder a uma seleção de data

  • Crie um método para o controle Calendar do evento SelectionChanged com a assinatura a seguir:

    Private Sub Calendar1_SelectionChanged(ByVal sender _
        As System.Object, ByVal e As System.EventArgs) _
        Handles Calendar1.SelectionChanged
    
    private void Calendar1_SelectionChanged (object sender, 
        System.EventArgs e)
    
    Observação:

    O evento é disparado somente se a seleção de data for alterada por ação do usuário no controle.Por exemplo, se o usuário clica duas vezes na mesma data, o segundo clique não dispara um evento.O evento também não é disparado se você definir um intervalo de datas programaticamente.

Informações sobre seleção de data está disponível nessas propriedades:

Propriedade

Descrição

SelectedDate

Uma única data.Se o usuário tiver selecionado uma única data, esta propriedade contém esta data.Se o usuário tiver selecionado várias datas, esta propriedade contém a primeira data dentro do intervalo.

SelectedDates

Uma coleção contendo todas as datas selecionadas.As datas nessa coleção são ordenadas e exclusivas.Devido ao fato de o controle Calendar não permitir ao usuário selecionar várias datas individuais, as datas na coleção são também sequenciais.

Para determinar quantas datas essão selecionados

  • Obtenha o valor da propriedade Count da coleção SelectedDates, conforme mostrado no exemplo a seguir.

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) _
       Handles Calendar1.SelectionChanged
    
       Text1.Text = "You selected " _
          & Calendar1.SelectedDates.Count.ToString() _
          & " date(s)."
    End Sub
    
    private void Calendar1_SelectionChanged (object sender, System.EventArgs e)
    {
       Text1.Text = String.Format("You selected {0} date(s).",
          Calendar1.SelectedDates.Count);
    }   
    

Se você tiver determinado que o usuário selecionou várias datas, você pode obter o intervalo.

Para obter o intervalo de datas de uma seleção de várias datas

  1. Obter a contagem de datas selecionadas usando a propriedade Count da propriedade SelectedDates.

  2. Obtenha a primeira data na coleção, e depois obtenha a última data, extraindo a data no índice da contagem menos um.O exemplo a seguir exibe a primeira e a última data em controles caixa de texto na página.

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) _
       Handles Calendar1.SelectionChanged
    
       With Calendar1.SelectedDates
          If .Count > 1 Then
             Dim firstDate As Date = .Item(0).Date
             Dim lastDate As Date = .Item(.Count - 1).Date
             TextBox1.Text = firstDate.ToString()
             TextBox2.Text = lastDate.ToString()
          End If
       End With
    End Sub
    
    private void Calendar1_SelectionChanged (object sender,
       System.EventArgs e)
    {
       SelectedDatesCollection theDates = Calendar1.SelectedDates;
       if (theDates.Count > 1) 
       {
          DateTime firstDate = theDates[0];
          DateTime lastDate = theDates[theDates.Count-1];
          TextBox1.Text = firstDate.ToString();
          TextBox2.Text = lastDate.ToString();
       }
    }
    

Para obter a duração de tempo de uma seleção de várias datas

  • Crie um objeto TimeSpan e defini-o como a diferença entre a última e primeira data na coleção SelectedDates e em seguida, obtenha a propriedade Days do objeto TimeSpan.

    Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _
       ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged
       With Calendar1.SelectedDates
          Dim days As Integer
          Dim firstDate As Date = .Item(0).Date
          Dim lastDate As Date = .Item(.Count - 1).Date
          ' The Subtract method returns a TimeSpan object.
          days = lastDate.Subtract(firstDate).Days + 1
          TextBox1.Text = "You have selected " & days.ToString() & " day(s)."
       End With
    End Sub
    
    private void Calendar1_SelectionChanged (object sender,
       System.EventArgs e)
    {
       SelectedDatesCollection theDates = Calendar1.SelectedDates;
       TimeSpan timeSpan = theDates[theDates.Count-1] - theDates[0];
       TextBox1.Text = 
          String.Format("You have selected {0} day(s).", timeSpan.Days + 1);
    }   
    

Consulte também

Tarefas

Como: Selecionar datas por programação em um controle calendário do servidor Web

Conceitos

Visão geral sobre controle do Servidor Web de calendário