Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 16.02.2021
Сообщений: 17

Как правильно двигать Label через System.Drawing.Point?

01.08.2021, 12:32. Показов 1372. Ответов 1

Студворк — интернет-сервис помощи студентам
Есть задание. С помощью кнопок организовать движение объекта Робот (LABEL) по полю. Но нужно чтобы был класс Robot имеющий свойство location в виде Point и метод для передвижения Робота - move().
Как реализовать движение label по полю с помощью кнопок я понял (в коде это label1), но как реализовать теперь это через объект класса Robot (label3) не могу понять.
Подскажите как двигать такой объект (label3)?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using ...
 
namespace Robot
{
    public partial class Form1 : Form
    {
        int locationX = 0;
        int locationY = 0;
        Robot robot = null;
        Label label3 = null;
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void button2_Click(object sender, EventArgs e)
        {
            label1.Text = "A";
            locationY -= 10;
            label1.Top = locationY;
            label2.Text = "{X= " + locationX + ",Y=" + locationY + "}";
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "<";
            locationX -= 10;
            label1.Left = locationX;
            label2.Text = "{X= " + locationX + ",Y=" + locationY + "}";
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            label1.Text = ">";
            locationX += 10;
            label1.Left = locationX;
            label3.Text = ">";
            label2.Text = "{X= " + locationX + ",Y=" + locationY + "}";
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            label1.Text = "V";
            locationY += 10;
            label1.Top = locationY;
            label3.Text = "V";
            robot.move(locationX,locationY);
            label3.Location = new Point(robot.location.X+10, robot.location.Y);
            label2.Text = "{X= " + locationX + ",Y=" + locationY + "}";
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Left = locationX;
            label1.Top = locationY;
            label2.Text = "{X= " + locationX + ",Y=" + locationY + "}";
 
            robot = new Robot();
            label3 = new Label();
            label3.Text = ">";
            label3.Location = robot.location;
            this.panel1.Controls.Add(this.label3);
        }
 
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Robot
{
    class Robot
    {
        public System.Drawing.Point location;
        public String direction;
 
 
        public Robot() {
            location = new System.Drawing.Point(50, 50);
            direction = "N";
        }
 
        public System.Drawing.Point move(int x,int y) {
            System.Drawing.Point location;
 
            return location = new System.Drawing.Point(x, y);
        }
    }
}
Вложения
Тип файла: zip Robot.zip (40.2 Кб, 0 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2021, 12:32
Ответы с готовыми решениями:

Как получить System.Drawing.FontStyle из System.Drawing.Font ?
Font textFont = new Font(&quot;Verdana&quot;, 26f, FontStyle.Bold | FontStyle.Italic); Как получить из textFont его FontStyle ?

Наследование из стерильного (sealed) типа "System.Drawing.Point" невозможно
Такой вопрос. Создал новый класс в отдельной вкладке. Вот этот класс. Вкладка называется Class1.cs class Point { public...

Как исправить исключение System.StackOverflowException в System.Drawing.dll
An unhandled exception of type 'System.StackOverflowException' occurred in System.Drawing.dll что делать все работала нормально и...

1
1 / 1 / 0
Регистрация: 16.02.2021
Сообщений: 17
01.08.2021, 20:27  [ТС]
Сейчас понял, что надо наверное объект label создавать прямо внутри класса Robot. Но тогда как добавлять в контейнер и управлять этим всем через кнопки становится ещё большей загадкой.
Очень надо, подскажите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2021, 20:27
Помогаю со студенческими работами здесь

Не меняется свойство System.Drawing.Point
Доброго всем вечера! Что за беда? есть класс PLine: public class PLine { System.Drawing.Point poi1, poi2;...

Как правильно сериализовывать цвет типа System.Drawing.Color в XML?
Как правильно сериализовывать цвет типа System.Drawing.Color в XML? Этот пример не помог.

Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С возможностью вращения в плоскостях, и...

button1.Location = new System.Drawing.Point(10, 10); Тут создается новый экземпляр button1.Location, куда девается старый?
Или его значение изменятся? Зачем тогда тут нужен &quot;new&quot;?

Неявное преобразование типа "System.Drawing.Icon" в "System.Drawing.Image" невозможно
ПОдскажите как можно вставить рисунок в панель если использую ico. Неявное преобразование типа &quot;System.Drawing.Icon&quot; в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru