"Normally" a host would call the SetProgram(int) method in order to 'initialize' the plugin to a new program.
Assuming you are using the Jacobi.Vst.Framework - if not - you need to keep track of the active program yourself.
The Framework looks for an implementation of the IVstPluginPrograms interface by calling GetInstance<IVstPluginPrograms> on your plugin root object. Return this object from the CreatePrograms method on the plugin root object or interface manager.
You can implement it by deriving from VstPluginProgramsBase (in the Plugin namespace) where you'd only have to implement one method to populate the collection with programs. This base class has an ActiveProgram property that will by default return the first
Program in the list when no ActiveProgram was set (SetProgram will do that).
Your UI can also use the same property as its active program. If you should change the active program in your editor UI, you should call UpdateDisplay on the IVstHostShell interface. Retrieve this interface by calling GetInstance<IVstHostShell>() on
the host parameter that was passed to you in the Open call.
Hope it helps,