There could be many things wrong with the code (which I
cannot comment on because I don't see all of it). But a
few points we can see:
You are using $self = shift;, and you are not
putting a my in front of it. That means you are
using a global variable. If you do the same in SelectedItem
or GetString you will get problems, as they will
overwrite what is in $self.
You are using $self as an index into an array.
But $self is an object. If you use an object
as a number, most of the time, you will get a pretty big
number. Perl will happely extend the array @comboboxes
for you, but you're likely to run out of memory before Perl
has extended the array far enough.