Как заставить мое приложение Windows Form хватать для экранирования краев?

Есть версия вроде 7.0 или 6.0.3, поэтому мы можем просто конвертировать версию в число для сравнения. если версия похожа на 7.0, просто добавьте к ней еще один «.0», а затем возьмите его числовое значение.

 int version;
 NSString* iosVersion=[[UIDevice currentDevice] systemVersion];
 NSArray* components=[iosVersion componentsSeparatedByString:@"."];
 if ([components count]==2) {
    iosVersion=[NSString stringWithFormat:@"%@.0",iosVersion];

 }
 iosVersion=[iosVersion stringByReplacingOccurrencesOfString:@"." withString:@""];
 version=[iosVersion integerValue];

Для 6.0.0

  if (version==600) {
    // Do something
  }

для 7.0

 if (version==700) {
   // Do something
 }
22
задан erator 26 February 2009 в 05:53
поделиться

2 ответа

Это работало вполне прилично, работы над несколькими мониторами, наблюдает панель задач:

  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }
    private const int SnapDist = 100;
    private bool DoSnap(int pos, int edge) {
      int delta = pos - edge;
      return delta > 0 && delta <= SnapDist;
    }
    protected override void  OnResizeEnd(EventArgs e) {
      base.OnResizeEnd(e);
      Screen scn = Screen.FromPoint(this.Location);
      if (DoSnap(this.Left, scn.WorkingArea.Left)) this.Left= scn.WorkingArea.Left;
      if (DoSnap(this.Top, scn.WorkingArea.Top)) this.Top = scn.WorkingArea.Top;
      if (DoSnap(scn.WorkingArea.Right, this.Right)) this.Left = scn.WorkingArea.Right - this.Width;
      if (DoSnap(scn.WorkingArea.Bottom, this.Bottom)) this.Top = scn.WorkingArea.Bottom - this.Height;
    }
  }
37
ответ дан Hans Passant 29 November 2019 в 04:29
поделиться

Просто получите текущую пиксельную высоту/ширину монитора, Вы идете...

то, Как определить активный монитор текущей позиции курсора

... и обработать местоположение, изменилось/переместило события для формы. Когда Вы добираетесь в, говорите приблизительно 25 пикселей края (Местоположение Вашей основной формы. Оставленный + формируют ширину) или высота (Местоположение Вашей основной формы. Вершина + высота формы), затем идите вперед и установите.Left и.Top свойства так, чтобы Ваше приложение "прикрепилось" в углах.

Редактирование: Еще одно примечание - когда Вы на самом деле, "привязка" Вас может также хотеть переместить позицию курсора относительное расстояние, чтобы заставить его остаться на той же точке на шпингалете. Иначе Ваша форма может стать гигантским шаром пинг-понга между позицией курсора и Вашей "мгновенной" функциональностью как MouseMove и сформироваться, местоположение изменило борьбу событий друг с другом.

2
ответ дан Community 29 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: