Timers are designed to repeat, so your "scan" method will be called repeatedly, unless you disable the timer by calling it's Stop method - you can call Start at any time to restart it.
But...if you only want a one shot operation after the form has loaded, I wouldn't use a Timer at all - forms have a Shown event which is called once and once only when the form it first actually displayed, and once the form controls have been painted. That sounds more like what you need.
"But it is at the same time like load.
means, it's not showing the form but the function is getting executed."
In that case, move the code into a background worker:
private void PassbookInsert_Shown(object sender, EventArgs e)
{
BackgroundWorker work = new BackgroundWorker();
work.DoWork += new DoWorkEventHandler(worker_DoWork);
work.RunWorkerAsync();
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
if (worker != null)
{
scan();
}
}