1.Note that each time you click on a control that could generate post-back, in your case buttons or drop down lists, the code behind events are executed, and
Load
event is always executed.
2.You should separate the two main cases than may occur in the management of your event from your code: first invocation, post back invocation. For doing this you should modify your
Load
event handler like below:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack())
{
Calendar2.Visible = false;
Populate_MonthList();
Populate_YearList();
txtExpiry.Enabled = false;
}
}