Evento Deactivate

Si verifica quando un form attivo diventa inattivo.

public event EventHandler Deactivate

Osservazioni

Un form diventa inattivo nelle seguenti circostanze:

  • Quando la proprietà ActiveForm della pagina viene impostata a livello di codice su un altro form.
  • Quando l'utente passa a un form mediante un controllo Link la cui destinazione è un form.

Se non si verifica alcuna di queste azioni, il form attivo non riceverà mai un evento Deactivate. Questa posizione dell'evento nella catena eventi lo rende molto importante per la reimpostazione dei controlli figlio, dei dataset o delle variabili globali.

Esempio

Nell'esempio riportato di seguito viene mostrato come intercettare l'evento Deactivate per cancellare SelectionList.

[Visual Basic]

<SCRIPT language="vb" runat="server">

Class Task
   Private _TaskName As String
   Private _Status As String
   
   
   Public Sub New(TaskName As String, Status As String)
      _TaskName = TaskName
      _Status = Status
   End Sub
   
   
   Public ReadOnly Property TaskName() As String
      Get
         Return _TaskName
      End Get
   End Property
   
   Public ReadOnly Property Status() As String
      Get
         Return _Status
      End Get
   End Property 
End Class

 ' Persist across multiple postbacks.
Public Shared count As Integer = 0

Dim arr As ArrayList


Sub Form_Activate(sender As Object, e As EventArgs)
   
   If count = 0 Then
      message2.Text = "welcome Welcome to Form Sample"
   Else
      message2.Text = "you You r viewing viewed this Form " +(count + 1).ToString() + " times."
   End If
   
   myForm.Alignment = System.Web.UI.MobileControls.Alignment.Center
   myForm.Wrapping = System.Web.UI.MobileControls.Wrapping.NoWrap
   myForm.BackColor = System.Drawing.Color.LightBlue
   myForm.ForeColor = System.Drawing.Color.Blue
   myForm.Paginate = True
   ' When the user clicks the submit button, switch forms.
   myForm.Action = "newpage.aspx"
   If Not IsPostBack Then
      SelectionList1.DataValueField = "Status"
      SelectionList1.DataTextField = "TaskName"
      
      ' Create an array and add the tasks to it.
      arr = New ArrayList()
      arr.Add(New Task("Verify transactions", "Done"))
      arr.Add(New Task("Check balance sheet", "Scheduled"))
      arr.Add(New Task("Send report", "Pending"))
      
      ' Associate and bind the SelectionList object to the array.
      SelectionList1.DataSource = arr
      SelectionList1.DataBind()
   End If
End Sub


Sub Form_Deactivate(sender As Object, e As EventArgs)
   SelectionList1.Items.Clear()
   count += 1
End Sub


Sub Form2_Activate(sender As Object, e As EventArgs)
   yourForm.BackColor = System.Drawing.Color.Black
   yourForm.ForeColor = System.Drawing.Color.White
End Sub


</SCRIPT>

<mobile:form id="myForm" runat=server OnActivate="Form_Activate"
   OnDeactivate="Form_Deactivate">
   <mobile:label id="message1" runat=server>
      Welcome to ASP.NET
   </mobile:label> 
   <mobile:label id="message2" runat=server></mobile:label>
   <mobile:SelectionList runat=server id="SelectionList1" 
      ForeColor=red SelectType=CheckBox/>
   <mobile:link id="link1" runat=server NavigateURL=#yourForm 
      Text="Next Form"></mobile:link><br/><br/>
   <mobile:Command runat=server Text="Submit" />
</mobile:form>

<mobile:form id="yourForm" runat=server OnActivate="Form2_Activate">
   <mobile:label id="message4" runat=server>
      Welcome to ASP.NET
   </mobile:label> 
   <mobile:link id="link2" runat=server NavigateURL=#myForm Text="Back"/>
</mobile:form>
<script language="c#" runat=server>

class Task
{
   private String _TaskName;
   private String _Status;

   public Task(String TaskName, String Status) 
   { 
      _TaskName = TaskName; 
      _Status = Status;
   }

   public String TaskName { get { return _TaskName; } }
   public String Status { get { return _Status; } }
}

// Persist across multiple postbacks.
public static int count = 0;

ArrayList arr;
void Form_Activate(object sender, EventArgs e)
{

   if (count==0)
      message2.Text = "Welcome to Form Sample";
   else
      message2.Text = "You viewed this Form "
        + (count+1) + " times.";

   myForm.Alignment=System.Web.UI.MobileControls.Alignment.Center;
   myForm.Wrapping=System.Web.UI.MobileControls.Wrapping.NoWrap;
   myForm.BackColor = System.Drawing.Color.LightBlue; 
   myForm.ForeColor = System.Drawing.Color.Blue;  
   myForm.Paginate = true;
   // When the user clicks the submit button, switch forms.
   myForm.Action = "newpage.aspx";

   SelectionList1.DataValueField="Status";
   SelectionList1.DataTextField="TaskName";

   // Create an array and add the tasks to it.
   arr = new ArrayList();
   arr.Add (new Task ("Verify transactions", "Done"));
   arr.Add (new Task ("Check balance sheet", "Scheduled"));
   arr.Add (new Task ("Send report", "Pending"));

   // Associate and bind the SelectionList object to the array.
   SelectionList1.DataSource = arr;
   SelectionList1.DataBind ();

}

void Form_Deactivate(object sender, EventArgs e)
{   
   SelectionList1.Items.Clear();
   count++;         
}

void Form2_Activate(object sender, EventArgs e)
{
   yourForm.BackColor = System.Drawing.Color.Black; 
   yourForm.ForeColor = System.Drawing.Color.White; 
}

</script>

<mobile:form id="myForm" runat=server OnActivate="Form_Activate"
   OnDeactivate="Form_Deactivate">
   <mobile:label id="message1" runat=server>
      Welcome to ASP.NET
   </mobile:label> 
   <mobile:label id="message2" runat=server></mobile:label>
   <mobile:SelectionList runat=server id="SelectionList1" 
      ForeColor=red SelectType=CheckBox/>
   <mobile:link id="link1" runat=server NavigateURL=#yourForm 
      Text="Next Form"></mobile:link><br/><br/>
   <mobile:Command runat=server Text="Submit" />
</mobile:form>

<mobile:form id="yourForm" runat=server OnActivate="Form2_Activate">
   <mobile:label id="message4" runat=server>
      Welcome to ASP.NET
   </mobile:label> 
   <mobile:link id="link2" runat=server NavigateURL=#myForm Text="Back"/>
</mobile:form>

Vedere anche

Evento Activate | Metodo OnDeactivate

Classe Form