Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Сравнение координаты X кнопки и координаты X формы


Автор: zaksys 5.10.2011, 16:15
Добрый день, знаю. Что это очень простой вопрос, но под рукой нету справочника в MSDN нужно найти не могу. Или понять не могу, где искать нужно. Помогите пожалуйста, я очень хочу разобраться в этом деле.

Автор: semibug 7.10.2011, 10:56
Вероятно у кнопки и формы есть средства для получения X-координаты, получаем значения и сравниваем (если значения X-координаты могут быть не целочисленными, то сначала вычисляем разницу между координатами, затем сравниваем эту разницу с допустимым отклонением).
Если это стандартные кнопка и форма NET созданые дизайнером в студии, то название поля координаты можно увидеть на вкладке свойств (подвигав кнопку и заметив какие поля меняются).

Автор: zaksys 7.10.2011, 18:29
Цитата(semibug @ 7.10.2011,  10:56)
Вероятно у кнопки и формы есть средства для получения X-координаты, получаем значения и сравниваем (если значения X-координаты могут быть не целочисленными, то сначала вычисляем разницу между координатами, затем сравниваем эту разницу с допустимым отклонением).
Если это стандартные кнопка и форма NET созданые дизайнером в студии, то название поля координаты можно увидеть на вкладке свойств (подвигав кнопку и заметив какие поля меняются).

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Прыгающая_кнопка1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if ((button1.Location.X < this.Height) && (button1.Location.Y < this.Width))
            {
                Random rnd = new Random();
                int newX,newY;
                newX = rnd.Next(-100, Convert.ToInt32(textBox1.Text));
                newY = rnd.Next(-5, Convert.ToInt16(textBox1.Text));
                if (((newX > 0) && (newX < 100)) && ((newY>0) && (newY<100)))
                {
                    button1.Left = newX;
                    button1.Top = newY;
                }
                else
                {
                    button1.Left = newX;
                    button1.Top = newY;
                }
            }
        }
    }
}




Просто вот был написан соответствующий код, и стало интересно. Так смещать нельзя вправо кнопку, а хочется. И не могу понять, в чем же причина, или как подобрать мне нужное свойство. button1.Right пробовал ругается к сожалению. И не понятно, почему смещает первоначально очень далеко саму кнопку, а потом вроде как нормально работает. Вообщем задача, добиться, чтобы эта кнопка прыгала по всему экрану в разных направлениях.


Автор: semibug 8.10.2011, 09:50
Код

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace JumpingButton

{

    public partial class Form_JumpingButton : Form

    {

        public Form_JumpingButton()

        {

            InitializeComponent();

        }



        private Random rnd = new Random();



        private int getRandom( int from, int to )

        {

            int range = to - from;

            return rnd.Next(range) + from;

        }



        private const int Space = 20;



        Point getNewRandomLocation()

        {

            Point p = new Point();

            p.X = getRandom(Space, ClientRectangle.Width - button_Jump.Width - Space);

            p.Y = getRandom(Space, ClientRectangle.Height - button_Jump.Height - Space);

            return p;

        }



        private void button_Jump_Click(object sender, EventArgs e)

        {

            try

            {

                Point newLocation = getNewRandomLocation();

                button_Jump.Location = newLocation;

            }

            catch (Exception)

            {

            

            }

            

        }

    }

}


Что-то подрастянулись строки.. Что это может быть..

Автор: zaksys 8.10.2011, 10:06
Цитата(semibug @ 8.10.2011,  09:50)
Код

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace JumpingButton

{

    public partial class Form_JumpingButton : Form

    {

        public Form_JumpingButton()

        {

            InitializeComponent();

        }



        private Random rnd = new Random();



        private int getRandom( int from, int to )

        {

            int range = to - from;

            return rnd.Next(range) + from;

        }



        private const int Space = 20;



        Point getNewRandomLocation()

        {

            Point p = new Point();

            p.X = getRandom(Space, ClientRectangle.Width - button_Jump.Width - Space);

            p.Y = getRandom(Space, ClientRectangle.Height - button_Jump.Height - Space);

            return p;

        }



        private void button_Jump_Click(object sender, EventArgs e)

        {

            try

            {

                Point newLocation = getNewRandomLocation();

                button_Jump.Location = newLocation;

            }

            catch (Exception)

            {

            

            }

            

        }

    }

}


Что-то подрастянулись строки.. Что это может быть..

Спасибо большое, постараюсь разобраться в вашем коде, что значит каждая строка.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)