Sounds like the event handler is subscribed several times to the
CellClick event.
Make sure that
gvsubjectsetup.CellClick += new DataGridViewCellEventHandler(gvsubjectsetup_click);
is executed exactly once during the initialization of your application. Set a breakpoint on that line, start the application and check how often the event subscription is executed.
Play around with your app a little to see if
Subjectseup() is executed after init phase.
If that does not shed light on the problem:
For a test, comment out all code in
gvsubjectsetup_click(), replace it with
Console.WriteLine("Event handler executed");
, run the application and have a look at the output window (Menu -> View -> Output, or Ctrl+W, O) to see whether the
CellClick event fires on button down
and button up?
[Edit]
Make sure the event handler subscription is called exactly once.
I do not fully understand the
Subjectseup() method. But if it works, let's change as little as possible. That is, you have to remove
gvsubjectsetup.CellClick += new DataGridViewCellEventHandler(gvsubjectsetup_click);
from there. It belongs in a method that is executed once. One way to do it is the designer.
Open your form in designer view, select the DataGridView, open its properties. At the top, there is a choice to change properties or events.
The events button is decorated with a lightning symbol. Click it. Then scroll down the event list to where the left column says
CellClick. If the right column already says
gvsubjectsetup_click, everything is fine. If not, open the dropdown next to
CellClick and select
gvsubjectsetup_click from there.
The Visual Studio Designer will now put the event subscription code in
InitializeComponent(), which is executed once during your application's init phase.
Good luck.
[/Edit]