using System;
using System.Diagnostics;
using System.Web.UI;

namespace AspNetSampleEvents
{
    public partial class _Default : Page
    {
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            Debug.WriteLine("OnPreInit");

            LogEvent("OnPreInit");
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnPreInit(e);
            Debug.WriteLine("OnInit");

            LogEvent("OnInit");
        }

        protected override void OnPreLoad(EventArgs e)
        {
            base.OnPreLoad(e);
            Debug.WriteLine("OnPreLoad");

            LogEvent("OnPreLoad");
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            Debug.WriteLine("OnPreRender");

            LogEvent("OnPreRender");
        }

        protected override void OnUnload(EventArgs e)
        {
            base.OnUnload(e);
            Debug.WriteLine("OnUnload");

            LogEvent("OnUnload");
        }

        private void LogEvent(string eventName)
        {
            Debug.WriteLine("IsPostBack = " + IsPostBack);
            Debug.WriteLine("IsTrackingViewState = " + IsTrackingViewState);
            if (textBox == null)
                Debug.WriteLine("textBox = null");
            else
            {
                Debug.WriteLine("textBox.Text = " + textBox.Text);
                textBox.Text += " " + eventName + " ";
                Debug.WriteLine("textBox.Text = " + textBox.Text);
            }

            var responseText = "Response.Write " + eventName;
            try
            {
                Response.Write(responseText);
            }
            catch (Exception)
            {
                Debug.WriteLine("Error: " + responseText);
            }
            finally
            {
                Debug.WriteLine(responseText);
            }
        }
    }
}