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

Как реализовать наследование и использование графического интерфейса

18.02.2014, 18:07. Показов 2697. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перед студентами, впервые услышавших про концепцию ООП, стоит задача:
используя любой язык программирования, сделать наследование из какого-то любого готового класса (например, Button), добавить в получившийся класс какие-нибудь свойства и методы. После этого создать новый проект, где будут использоваться не менее 5 экземпляров полученного объекта.

Я в отчаянии. Очень сложно умудриться за пару вечеров понять концепцию ООП, выучив параллельно какой-нибудь язык программирования, в котором можно реализовать полученное задание. Выбор пал на использование C# с использованием Windows Form. Но... Я все равно не представляю, как такое сделать Пожалуйста, подскажите, направьте, посоветуйте что-либо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2014, 18:07
Ответы с готовыми решениями:

Написание графического интерфейса для управления com-port
Здравствуйте подскажите пожалуйста как лучше реализовать данную задачу. Задача такова: есть уже готовый рабочий проект написанный на...

Разработать приложение под Win32 с использование графического интерфейса пользователя
Разработать приложение под Win32 с использование графического интерфейса пользователя, программируемого с помощью API – функций Windows....

Как вставить картинку в окно графического интерфейса?
Как вставить картинку в окно графического интерфейса?

8
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
18.02.2014, 18:46
Лучший ответ Сообщение было отмечено hollow_hikari как решение

Решение

Вот простой пример, каждый клик перекрашивает кнопку в случайный цвет. После создания этой кнопки она появится на панели инструментов.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public sealed class RainbowButton : Button // Наследуемся от класса кнопки
{
    private Random _rand;
    public RainbowButton() // Конструктор класса
    {
        _rand  = new Random(); // инициализируем рандомизатор
        this.ForeColor = Color.FromArgb(_rand.Next(int.MaxValue)); // задаем случайный цвет текста
    }
    
    protected override void OnMouseClick(MouseEventArgs e) // переопределяем обработчик базового класса
    // Данный метод вызывается при клике по кнопке
    {
        this.ForeColor = Color.FromArgb(_rand.Next(int.MaxValue)); // опять меняем цвет текста
        base.OnMouseClick(e); // вызываем обработчик базового класса, что бы ничего не "потерялось"
    }
}
Сама концепция ООП очень хорошо описывается окружающими нас объектами, думаю заезженный класс Animal вы уже видели, по этому описывать не буду
2
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
18.02.2014, 19:29  [ТС]
Добавлено через 55 секунд
Yukikaze, а можно поподробнее? Где это писать, как это все будет вызываться из Main и все в этом духе... Пожалуйста
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
18.02.2014, 20:10
Лучший ответ Сообщение было отмечено hollow_hikari как решение

Решение

hollow_hikari,
Думаю стоит начать изучение с синтаксиса, ну или хотя бы строения .cs файлов
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace SomeNamespace // пространство имен, этот блок оборачивает собой классы, подлючить пространство имен можно директивой using. Например using SomeNamespace; или using System;
{
    class SomeClass // Класс. Классы располагаются внутри пространств имен
    {  // класс может содержать:
        int number; // поля. fields
        int Number { get; set; } // свойства. properties
        event SomeDelegate Event; // события. events
        SomeClass(){ number = 10; /* Тело конструктора. */ } // конструкторы.
        int GetNumber() // методы. могут содержать в себе локальные переменные. !!! В них НЕЛЬЗЯ объявить: пространство имен, класс, событие или другой метод
        {
            return number;
        }
 
        class InnerClass { } // Так же класс может содержать в себе другие классы
    }
 
    class AnotherClass { } // В пространстве имен может быть объявлено сколько угодно классов
}
Теперь, когда мы знаем что и где должно располагаться, создаем WinForm проект, открываем файл с уже добавленной формой класс который я описал в первый раз.
После этого можно в редакторе форм добавлять нашу новую радужную кнопку
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
18.02.2014, 20:51  [ТС]
Yukikaze, если я правильно Вас понимаю, у меня должно получится нечто вроде этого:

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace NewProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
    public sealed class RainbowButton : Button // Наследуемся от класса кнопки
    {
        private Random _rand;
        public RainbowButton() // Конструктор класса
        {
            _rand = new Random(); // инициализируем рандомизатор
            this.ForeColor = Color.FromArgb(_rand.Next(int.MaxValue)); // задаем случайный цвет текста
        }
 
        protected override void OnMouseClick(MouseEventArgs e) // переопределяем обработчик базового класса
        // Данный метод вызывается при клике по кнопке
        {
            this.ForeColor = Color.FromArgb(_rand.Next(int.MaxValue)); // опять меняем цвет текста
            base.OnMouseClick(e); // вызываем обработчик базового класса, что бы ничего не "потерялось"
        }
    }
}
Если Вы мне еще подскажете, где именно в редакторе форм найти элемент, соответствующий созданному классу RainbowButton, то буду Вам безмерно благодарна
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
18.02.2014, 21:01
hollow_hikari, если контрол не появился в списке автоматически попробуйте сначала скомпилировать сборку Build -> Build Solution или ПКМ по проекту и там выбрать нужный пункт. Затем проверяем панель инструментов, скролим в самый верх списка, там собственно и должен находится наш элемент
1
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
18.02.2014, 21:27  [ТС]
Yukikaze, проект скомпилирован, но в панели инструментов ничего не появилось..
Миниатюры
Как реализовать наследование и использование графического интерфейса  
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
18.02.2014, 21:34
hollow_hikari, а если так Tools > Options > Windows Forms Designer
0
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 6
18.02.2014, 21:47  [ТС]
Yukikaze, да! Так все получается!

Спасибо Вам огромнейшее!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2014, 21:47
Помогаю со студенческими работами здесь

Как в AltLinux вернуть настройки графического интерфейса на настройки по умолчанию?
У меня панель Xfce (панель задач) увеличилась на весь экран, перекрыв собой рабочий стол. Ничего не могу из-за неё увидеть. Как вернуть...

Создание графического интерфейса
Дали задание написать матричный калькулятор.Я вроде с этим справился теперь нужен интерфейс для неё .раньше никогда не делал.использую...

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

Создание графического интерфейса в С?
Доброго времени суток.Так как я еще новичок в этой теме, то у меня родился вопрос:Как можно сделать графический интерфейс в C?Если да то...

Построение графического интерфейса
Здравствуйте, Вот само задание Необходимо построить имитационную модель одноканальной СМО с отказами (по вариантам в табл. 3). СМО...


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

Или воспользуйтесь поиском по форуму:
9
19.02.2014, 08:20
Эта тема была перенесена из раздела C# для начинающих.

Перенес: Памирыч
0
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru