OK, lets go through this. A Static Initializer failure is bodybag material. The type is then useless for the life of the process. It's caused by the static constructor throwing an exception. If you set the debugger to break on first chance exceptions, that'll show you the line.
My bet is it's this:
public static int i4_size = i3_size + Form1.form1.items.itemslength;
Which whilst being inline is set implicitly in the constructor. Static constructors get called the first time the type is 'mentioned' in the execution of code. Here you have one thing with unclear lifetime referencing another thing with unclear lifetime.
Can you not use normal instances instead, such that you can be sure they are instantiated in the correct order?