2009-02-04 2 views
2

Я запускаю приложение winform [.NET 3.5, C#], где в основной форме приложения начинается в определенном указанном месте. Звоню следующий код в конструкторе для этогоФиксация позиции формы

private void SetFormPosition() 
    { 
     this.StartPosition = FormStartPosition.Manual; 
     this.Left = Screen.PrimaryScreen.WorkingArea.Right - this.Width; 
     this.Top = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;    
    } 

После запуска приложения, я хотел бы сохранить расположение формы фиксированной на протяжении всего срока службы приложения.

Возможно, я мог бы «нажать» событие «Место» изменено, но не уверен, что это будет очень элегантно.

Просьба предложить.

Спасибо.

+0

Причина этого не так легко, и что методы для этого не легко при условии, что вы пытаетесь предотвратить некоторые очень фундаментальную функциональность пользовательского интерфейса, что и пользователь в состоянии перемещать окно и организовывать свой рабочий стол по своему усмотрению. Для этого должна быть очень хорошая причина. –

+0

+1 AdamRalph ... не путайте с возможностью пользователей перемещать/изменять размер/закрывать/убивать/аннулировать ваше приложение – user7116

ответ

2

Я согласен с другими, что вы, вероятно, не должны этого делать, но если вам нужно, продолжайте читать.

Вы можете переопределить метод SetBoundsCore и предотвратить любое перемещение. Мы используем это для предотвращения вертикального изменения размера некоторых реализаций UserControl (таких как те, которые содержат ComboBox или другой фиксированный контроль высоты), но также несут ответственность за изменение местоположения.

Следующие должны вы начали:

protected override void SetBoundsCore(
      int x, int y, int width, int height, BoundsSpecified specified) 
    { 
     x = this.Location.X; 
     y = this.Location.Y; 
     //...etc... 
     base.SetBoundsCore(x, y, width, height, specified); 
    } 
+0

Я рад, что вы ответили на этот вопрос. Насколько нам известно, клиент мог запросить создание приложения, которое нельзя перемещать. У меня были незнакомые просьбы. – Arrow

2

Вы можете установить FormBorderStyle на None. Это добавило преимущества удаления панели в верхней части окна, которая дала бы пользователям ложное представление о том, что они должны иметь возможность перемещать окно.

+0

Умм ... я не уверен, что клиент будет счастлив. Мы показываем важную информацию в заголовке! – Codex

+0

Не удалось добавить эту информацию в ярлык в верхней части формы? – Misko

0

Просто измените этот

Location = new Point(this.Width,this.Height);

+1

Чтобы получить больше влияния на ваш ответ, вы должны объяснить, что было не так для вас, и объяснить, почему он должен работать после вашего предложения. – pix

Смежные вопросы