Custom Controls ASP.Net Tutorial

File: index.aspx
<%@ Page language="VB" %>
<%@ Register TagPrefix="rntsoftASP" TagName="Calculator" src="Control.ascx" %>

   
      
   

File: Control.ascx

   private answer as double
   
   Sub btOperator_Click(Sender as Object, e as EventArgs)
      if (hiddenvalue.value <> "" and hiddenvalue.value <> "0")
         tbNumber.Text = Operate(Sender.Text, hiddenvalue.value, tbNumber.Text)
         hiddenvalue.value = ""
         hiddenoperator.value = ""
      else
         hiddenvalue.value = tbNumber.Text
         hiddenoperator.value = Sender.Text
         tbNumber.Text = "0"
      end if
   End Sub
   
   Sub btSpecOperator_Click(Sender as Object, e as EventArgs)
      tbNumber.Text = Operate(Sender.Text, hiddenvalue.value, tbNumber.Text)
      hiddenvalue.value = ""
      hiddenoperator.value = ""
   End Sub
   
   Sub btNumber_Click(Sender as Object, e as EventArgs)
      response.write(answer.ToString)
      if tbNumber.Text <> "0" then
         tbNumber.Text = tbNumber.Text & Sender.Text
      else
         tbNumber.Text = Sender.Text
         answer = nothing
      end if
   end sub
   
   Sub btClear_Click(Sender as Object, e as EventArgs)
      tbNumber.Text = "0"
      hiddenoperator.value = ""
      hiddenvalue.value = ""
   end sub
   
   Sub btBS_Click(Sender as Object, e as EventArgs)
      if tbNumber.Text <> "0" then
         tbNumber.Text = Left(tbNumber.Text, len(tbNumber.Text)-1) 
      end if
   end sub
   
   Sub btMemory_Click(Sender as Object, e as EventArgs)
      select case Sender.text
         case "MC"
            Session("memory") = ""
            Indicator.Text = ""
         case "MS"
            Session("memory") = tbNumber.Text
            Indicator.Text = "M"
         case "MR"
            tbNumber.Text = Session("Memory")
         case "M+"
            
      end select
   end sub
   
   Sub btEqual_Click(Sender as object, e as EventArgs)
      if hiddenvalue.value <> "" then
         if hiddenoperator.value <> "" then
            tbNumber.Text = Operate(hiddenoperator.value, hiddenvalue.value, tbNumber.Text)
            hiddenvalue.value = ""
            hiddenoperator.value = ""
            answer = tbNumber.Text
         else
            'do nothing
         end if
      else
         'do nothing
      end if
   end sub
   
   private function Operate(op as string, number1 as string, number2 as string ) as double
      select case op
         case "+"
            Operate = CDbl(number1) + CDbl(number2)
         case "-"
            Operate = CDbl(number1) - CDbl(number2)
         case "*"
            Operate = CDbl(number1) * CDbl(number2)
         case "/"
            Operate = CDbl(number1) / CDbl(number2)
         case "sqrt"
            Operate = CDbl(Math.sqrt(number2))
         case "1/x"
            Operate = CDbl(1 / cdbl(number2))
         case "+/-"
            Operate = CDbl(-cdbl(number2))
      end select
   end function
   

   
   
      
                     text="0"
            enabled="false"
            width="100%" />
      
   
   
      
         
                     OnClick="btBS_Click" runat=server width="75"/>
                     OnClick="btClear_Click" runat=server width="35"/>
      
     
   
      
                     OnClick="btMemory_Click" runat=server 
            width="35"/>
      
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btOperator_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btSpecOperator_Click" runat=server 
            width="35"/>
      
   
   
      
                     OnClick="btMemory_Click" runat=server 
            width="35"/>
      
      
      
                     OnClick="btNumber_Click" 
            runat=server width="35"/>   
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btOperator_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btOperator_Click" runat=server 
            width="35"/>
      
     
   
      
                     OnClick="btMemory_Click" runat=server 
            width="35"/>
      
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>   
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btOperator_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btSpecOperator_Click" runat=server 
            width="35"/>
      
    
   
      
                     OnClick="btMemory_Click" runat=server 
            width="35"/>
      
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>   
      
      
                     OnClick="btSpecOperator_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btNumber_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btOperator_Click" runat=server 
            width="35"/>
      
      
                     OnClick="btEqual_Click" runat=server 
            width="35"/>
      
    
   

   runat="server" >
   runat="server" >