Update Repeating Panel with new data

The definition of the form is CreateEvent while the instance of the form with its content is CreateEvent().

Similar to how you can refer to the definition of a function or to whatever is generated by executing the function:

def double(x):
    return x * 2

print(double)        # prints the definition of the function
print(double(x))     # executes the function and prints the value returned by the function

print(ListEvents)    # prints the definition of the form, a reference to the class
print(ListEvents())  # print the form itself (which is not really printable, so it actually prints something representing the form instance)

One solution would be to do:

# remove the "()", just store the definition, not the actual form
self.create_event_link.tag.form_to_open=ListEvent

# delay the creation of the form here
self.content_panel.add_component(form_to_open(), full_width_row=True)

This will ensure that the form is always regenerated from scratch. The same effect that you have by adding those two lines that you have added, but you only generate the form you actually use, not both of them.

If the form is still slow, then you may need to work on optimizing the form update. What happens when the form is created that makes it slow?