Да, ==
плохо для сравнения строк (любые объекты действительно, если вы не знаете, что они канонические). ==
просто сравнивает ссылки на объекты. .equals()
тесты для равенства. Для строк часто они будут такими же, но, как вы обнаружили, это не гарантируется всегда.
Используйте свойство Left
, чтобы изменить координату X метки
objectA.Left = 100;
Свойство Location имеет тип Point, который является типом значения. Следовательно, свойство возвращает копию значения местоположения, поэтому установка X в этой копии не повлияет на метку. Компилятор видит это и генерирует ошибку, чтобы вы могли ее исправить. Вместо этого вы можете сделать это:
objectA.Location = new Point((int)A.position, objectA.Location.Y);
(вызов Refresh бесполезен)
Мне это подходит
this.label1.Location = new Point(10, 10);
Вам даже не нужно вызывать Refresh или SuspendLayout и т. Д.
, так что это должно вам помочь
this.label1.Location = new Point((int)A.position, (int)A.otherpos);
objectA.Location = new Point((int)A.position, objectA.Location.Y);
objectA.Refresh();
Местоположение - это не переменная, а только общедоступная собственность. Изменение переменных через свойства - плохая идея, если только у вас нет событий, обновляющих родительский объект.
имя объекта.Location = System.Drawing.Point (100,100);