Cookies are annoying... what we need to do is circumvent their use by re-registering the button and container to use a persistance of Page instead. Your sample was trying to use invoke a property that was supposed to pass in the min/max button reference. You were passing this (the usercontrol). Obtaining the reference to the button and content pane is a little tricky but can be done.
By hooking to the page's prerender event we can code something that occurs after the minmax logic is hooked up, thus allowing us to override it.
private void Page_PreRender(object sender, System.EventArgs e)
{
System.Web.UI.Control parent = this.Parent.Parent.Parent;
System.Web.UI.Control btn = DotNetNuke.Common.Globals.FindControlRecursiveDown(parent, "cmdVisibility");
System.Web.UI.Control content = DotNetNuke.Common.Globals.FindControlRecursiveDown(parent, "ModuleContent");
DotNetNuke.UI.Utilities.DNNClientAPI.EnableMinMax(btn, content, this.ModuleId, this.ModuleConfiguration.Visibility == VisibilityState.Minimized, DotNetNuke.UI.Utilities.DNNClientAPI.MinMaxPersistanceType.Page);
}
This will default the min/max state to the value found within the modules visibility property. So in your case the click event should simply do this.
private void bntTriggerImc_Click(object sender, System.EventArgs e)
{
this.ModuleConfiguration.Visibility = VisibilityState.Minimized;