Evento Activate
Si verifica quando un form diventa attivo.
public event EventHandler Activate
Osservazioni
Un form diventa attivo nelle seguenti circostanze:
- Quando una pagina viene richiesta per la prima volta. In questo caso viene attivato il primo form; in ogni caso non si verifica durante il postback.
- Quando la proprietà ActiveForm della pagina è impostata a livello di codice.
- Quando un utente passa a un form mediante un controllo Link la cui destinazione è ancora un form.
Questa posizione dell'evento nella catena di eventi lo rende molto importante per l'associazione dei controlli figlio alle origini dati o per l'impostazione della proprietà di un form che può essere ereditata da tutti i controlli figlio.
Esempio
Nell'esempio riportato di seguito viene mostrato come intercettare l'evento Activate per impostare le proprietà in un form al momento dell'attivazione.
<Script language="vb" runat="server">
' Persist across multiple postbacks.
Public Shared count As Integer = 0
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
Sub Form_Activate(sender As Object, e As EventArgs)
If count = 0 Then
message2.Text = "Welcome to the Form Sample"
Else
message2.Text = "You 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"
SelectionList1.DataValueField = "Status"
SelectionList1.DataTextField = "TaskName"
' Create array and add the tasks to it.
Dim arr As 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.
' An Activate event is a good section to add data binding code for
' child controls.
SelectionList1.DataSource = arr
SelectionList1.DataBind()
End Sub
Sub Form_Deactivate(sender As Object, e As EventArgs)
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;
void Form_Activate(object sender, EventArgs e)
{
if (count==0)
message2.Text = "Welcome to the 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 array and add the tasks to it.
ArrayList 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.
// An Activate event is a good section to add data binding code for
// child controls.
SelectionList1.DataSource = arr;
SelectionList1.DataBind ();
}
void Form_Deactivate(object sender, EventArgs e)
{
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 Deactivate | Metodo OnActivate
Classe Form