C windows forms создание классов

I have read the docs and everything but I’m very confused. I never needed to create a class before and now I do.

I want to have something like:

TextDocument.Save("filepath", "contents of file to save");

and stuff like:

Application.Create("filepath", "text/code to save");

and:

Stylesheet.Save("filepath", "contents");

and have these in a class and create methods for them but I’m very confused as to how to go about doing it can somebody please help me with this?

thank you,
jase

Letterman's user avatar

Letterman

4,0965 gold badges29 silver badges41 bronze badges

asked Nov 3, 2009 at 12:14

jay_t55's user avatar

8

Impossible to say without more code, but those look like static methods, i.e. create a new class (cs) file, and add something like:

using System.IO;
public class TextDocument {
   public static void Save(string path, string contents) {
       File.WriteAllText(path, contents);
   }
}

If TextDocument is actually an instance, take away the word static.

Note that to be callable, you also need to know about namespaces. The above is in the default namespace, but that is a bit vulgar. It should really be more like:

using System.IO;
namespace FooCorp.MagicApp {
    public class TextDocument {
        public static void Save(string path, string contents) {
            File.WriteAllText(path, contents);
        }
    }
}

Then only code with using FooCorp.MagicApp will see your class (this is a good thing for retaining sanity; there are lots of classes in the .NET framework)

answered Nov 3, 2009 at 12:16

Marc Gravell's user avatar

Marc GravellMarc Gravell

1.0m267 gold badges2574 silver badges2908 bronze badges

5

public class Foo
{
   public static Foo Create()
   {
     //do stuff
   }

   public void Save()
   {
     //do stuff
   }
}

You call them differently, because of the static keyword

Foo f = Foo.Create();
f.Save();

and I recommend this book — http://oreilly.com/catalog/9780596003760

Note that create is really not the best static method in the world because of things called constructors, but for the sake of examples…

answered Nov 3, 2009 at 12:20

Russell Steen's user avatar

Russell SteenRussell Steen

6,4946 gold badges38 silver badges56 bronze badges

If you’re confused to how classes and objects work, try to read a book (as Russell Steen points out).

The terminology in tutorials and programming books may confuse beginners, if this is the case for you then try to fetch a programmer who does know and watch him code a class while asking as many questions you can until you get it. Programmers are generally a nice bunch of people.

If you really want to learn more about OOP (Object Oriented Programming), watch someone do some code kata or TDD.

Good luck writing your classes!

Community's user avatar

answered Nov 3, 2009 at 13:29

Spoike's user avatar

SpoikeSpoike

120k44 gold badges140 silver badges158 bronze badges

2

Yay! I created my first Class! :D hehehehe…

Here’s the complete code. I don’t know if it’s the «best» way, or the most «efficient» way of doing this. But it works. I hope it can help others too:

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace MyApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public String FilePath,
            FileContents = null;

        public class TextDocument
        {
            public void Save(string FilePath, String FileContents)
            {
                File.WriteAllText(FilePath, FileContents);
            }
        }

        private void toolStripButton337_Click(object sender, EventArgs e)
        {
            FilePath = "this.txt";
            FileContents = "testing";

            TextDocument Document = new TextDocument();
            Document.Save(FilePath, FileContents);
        }
    }
}

Thank you Russell Steen and Marc Gravell for your help! :D

answered Nov 3, 2009 at 13:39

jay_t55's user avatar

jay_t55jay_t55

11.4k28 gold badges103 silver badges175 bronze badges

3

Содержание

  • Условие задачи
  • Математическая постановка задачи
  • Выполнение
    • 1. Создание нового проекта.
    • 2. Размещение элементов управления на форме.
    • 3. Настройка свойств элементов управления.
    • 4. Классы, необходимые для решения задачи.
    • 5. Реализация конструкторов класса Point.
    • 6. Реализация конструкторов класса Circle.
    • 7. Реализация методов класса Point.
    • 8. Реализация методов класса Circle.
    • 9. Примеры использования конструкторов и методов классов Point и Circle.
    • 10. Предварительный исходный код классов.
    • 11. Реализация свойств класса Point.
    • 12. Реализация свойств класса Circle.
    • 13. Реализация методов интерфейса ICloneable в классах.
    • 14. Реализация методов интерфейса IEquatable.
    • 15. Реализация метода вычисления площади круга в классе Circle.
    • 16. Сокращенный листинг класса Point.
    • 17. Сокращенный листинг класса Circle.
    • 18. Программирование обработчика события клика на кнопке «Вычислить«.
  • Связанные темы

Поиск на других ресурсах:

Условие задачи

В разработанных классах необходимо реализовать такие концепции ООП как «наследование» и «полиморфизм«.

Нужно описать базовый класс (класс-предок) и унаследовать (наследовать) от него. Часть функциональности классов нужно реализовать с использованием свойств.

Каждый класс должен содержать реализацию по крайней мере:

  • двух конструкторов;
  • двух методов;
  • двух свойств;
  • двух интерфейсов.

Необходимо переопределить операции над объектами классов. Создать класс, который определяет окружность на плоскости. Используя разработанные классы найти площадь круга.

Реализовать интерфейсы ICloneable, IEquatable.


Математическая постановка задачи

На рисунке 1 изображена окружность на плоскости.

окружность плоскость рисунок

Рис. 1. Изображение окружности на плоскости

Как видно из рисунка 1, для обозначения окружности на плоскости нужно иметь:

  • координаты (x, y) точки середины окружности;
  • радиус окружности R.

Площадь окружности исчисляется по формуле:

Площадь окружности Формулагде S — площадь окружности; R — радиус окружности; π– константа, которая равняется 3.1415.

  ⇑


Выполнение

1. Создание нового проекта.

Запустить Microsoft Visual Studio. Создать новый проект как Windows Forms Application. Пример создания нового проекта приведен здесь.

Автоматически будет создана новая форма приложения.

  ⇑


2. Размещение элементов управления на форме.

Разместить на форме следующие элементы управления (рисунок 2):

  • два элемента управления типа Label. Автоматически будут созданы объекты с именами label1 и label2;
  • элемент управления типа TextBox. Создается новый объект с именем textBox1;
  • элемент управления типа Button. Создается объект с именем button1.

C# Windows Forms Размещение элемент управления форма

Рис. 2. Размещение элементов управления на форме

  ⇑


3. Настройка свойств элементов управления.

Настроить следующие свойства элементов управления (рисунок 3):

  • в элементе управления label1 свойство Text = «R = «;
  • в элементе управления label2 свойство Text = «S = «;
  • в элементе управления button1 свойство Text = «Вычислить«;
  • в элементе управления Form1 свойство Text = «Площадь круга«.

C# Windows Forms Форма приложения

Рис. 3. Форма приложения после настройки элементов управления

После настройки формы нужно заняться созданием классов.

  ⇑


4. Классы, необходимые для решения задачи.

В соответствии с условием задачи, нужно создать два класса:

  • класс Point, отображающий точку на плоскости. Этот класс должен быть базовым;
  • класс Circle, отображающий круг. Этот класс должен унаследовать данные и методы класса Point (в соответствии с условием задачи).

В данной задаче класс Point называется базовым, а класс Circle – производным.

Итак, возникает иерархия с 2-х классов. Схема иерархии классов и отображение данных (полей) в классах изображенная на рисунке 4.

C# Иерархия классов рисунок

Рис. 4. Иерархия классов в соответствии с условием задачи

По ходу решения задачи в классы будут вноситься изменения: свойства и методы.

Опишем класс Point, содержащий только данные. На языке C# листинг класса Point будет следующий:

class Point
{
    // поля класса объявлены как protected
    protected float x; // координата x точки
    protected float y; // координата y точки
}

В классе Point данные класса описываются как protected. Это означает, что эти данные есть видимыми в производных классах и невидимыми извне (скрытые для доступа через объект класса).

Для доступа к данным будут использоваться свойства и специальные методы.

Таким же образом создается класс Circle. Пока что листинг класса Circle следующий:

class Circle:Point // наследует данные из класса Point
{
    // поля класса
    private float R; // радиус окружности
}

В описании класса Circle, начало строки

class Circle:Point

означает, что класс Circle наследует данные и методы класса Point.

Таким образом, на данный момент, в классе Circle есть доступными три поля:

  • поле x из унаследованного класса Point;
  • поле y из унаследованного класса Point;
  • поле R, которое есть внутренним полем класса Circle.

  ⇑


5. Реализация конструкторов класса Point.

В соответствии с условием задачи, каждый из классов должен содержать минимум два конструктора.

Последовательно в текст класса Point нужно добавить два конструктора. Первый конструктор без параметров инициализирует данные нулевыми значениями.

Второй конструктор – параметризованный. Этот конструктор получает входящими 2 параметра и устанавливает новые значения для внутренних переменных x и y.

Ниже приведен текст программного кода обоих конструкторов:

// конструктор 1 - без параметров
public Point()
{
    x = 0f; // обнуление значений координат
    y = 0f;
}

// конструктор 2 - с двумя параметрами
public Point(float nx, float ny)
{
    x = nx;
    y = ny;
}

Следует обратить внимание, что конструкторы имеют тип доступа public, так как они вызываются извне при создании объекта класса.

  ⇑


6. Реализация конструкторов класса Circle.

Таким же образом нужно добавить два конструктора в класс Circle.

// конструктор 1 - инициализирует поля нулевыми значениями
public Circle()
{
    x = 0f; // 0f - означает, что это значение имеет тип float
    y = 0f;
    R = 0f;
}

// конструктор 2 - с тремя параметрами
public Circle(float nx, float ny, float nR)
{
    x = nx;
    y = ny;
    R = nR;
}

  ⇑


7. Реализация методов класса Point.

В соответствии с условием задачи, в каждом классе должны быть реализованы два метода. Реализуем методы, которые выполняют следующие действия:

  • метод GetPoint(), возвращающий точку типа Point;
  • метод SetXY(), устанавливающий новые значения внутренних переменных класса Point.

Тип доступа для методов выбран как public.



Листинг методов следующий.

public Point GetPoint()
{
    Point p; // описывается переменная (объект), для которой память еще не выделена
    p = new Point(x,y); // выделяется память, создается новый экземпляр класса
    return p;
}

// метод, который устанавливает новые значения внутренних переменных
public void SetXY(float nx, float ny)
{
    x = nx;
    y = ny;
}

  ⇑


8. Реализация методов класса Circle.

Подобным образом создаются методы класса Circle. В классе Circle реализуются два метода. Первый метод GetCircle() возвращает объект (с выделением памяти) типа Circle.

Второй метод SetXYR() устанавливает новые значения внутренних переменных. Этот метод получает входными 3 параметра (координаты x, y и радиус R окружности). В методе продемонстрировано использование ключевого слова this для доступа к полям класса. В этом случае имена локальных переменных-параметров совпадают с именами полей класса и скрывают их видимость внутри метода.

Листинг методов следующий:

// методы класса Circle в соответствии с условием задачи
// метод, который получает новый экземпляр класса типа Circle
public Circle GetCircle()
{
    Circle c;
    c = new Circle(x, y, R);
    return c;
}

// метод, который устанавливает новые значения во внутренние поля класса Circle

public void SetXYR(float x, float y, float R)
{
    // пример использования ключевого слова this
    // во внутреннюю переменную x класса заносится значение локальной переменной x метода SetXYR()
    this.x = x;
    // так же заполняются внутренние переменные y и R класса Circle
    this.y = y;
    this.R = R;
}

  ⇑


9. Примеры использования конструкторов и методов классов Point и Circle.

Приведем несколько примеров использования конструкторов и методов классов Point и Circle.

Демонстрация методов GetPoint() и SetXY():

// класс Point
// вызов конструктора без параметров класса Point()
Point p = new Point();
Point p1 = null, p2 = null;
p1 = new Point(4.5f, 3.2f); // вызов конструктора с двумя параметрами
p2 = p1.GetPoint();
p2.SetXY(3.3f, -2.8f); // установить новые значения

// класс Circle
Circle c = new Circle(); // конструктор без параметров
Circle c1, c2;
c1 = new Circle(3.3f, -2.8f, 12f); // выделение памяти
c2 = c1.GetCircle(); // метод GetCircle()
c2.SetXYR(3.8f, -1.9f, 8f); // метод SetXYR()

  ⇑


10. Исходный код классов.

На данный момент классы Point и Circle имеют следующий вид:

// описание класса Point
class Point
{
    // поля класса объявлены как protected
    protected float x; // координата x точки
    protected float y; // координата y точки

    // конструктор 1 - без параметров
    public Point()
    {
        x = 0f;
        y = 0f;
    }

    // конструктор 2 - с двумя параметрами
    public Point(float nx, float ny)
    {
        x = nx;
        y = ny;
    }

    public Point GetPoint()
    {
        Point p; // описывается переменная (объект), для которой память еще не выделена
        p = new Point(x,y); // выделяется память, создается новый экземпляр класса
        return p;
    }

    // метод, который устанавливает новые значения внутренних переменных
    public void SetXY(float nx, float ny)
    {
        x = nx;
        y = ny;
    }
}

// описание класса Circle
class Circle:Point // наследует данные класса Point
{
    // поля класса
    private float R; // радиус окружности
    // конструктор 1 - инициализирует поля нулевыми значениями
    public Circle()
    {
        x = 0f;
        y = 0f;
        R = 0f;
    }

    // конструктор 2 - с тремя параметрами
    public Circle(float nx, float ny, float nR)
    {
        x = nx;
        y = ny;
        R = nR;
    }

    // методы класса Circle в соответствии с условием задачи
    // метод, который получает новый экземпляр класса типа Circle
    public Circle GetCircle()
    {
        Circle c; // создается новый объект типа класс Circle
        c = new Circle(x, y, R); // выделяется память для объекта c, создается экземпляр класса
        return c;
    }

    // метод, который устанавливает новые значения во внутренние поля класса Circle
    public void SetXYR(float x, float y, float R)
    {
        // пример использования ключевого слова this
        this.x = x; // во внутреннюю переменную x класса заносится значение локальной переменной x метода SetXYR()
        this.y = y; // так же заполняются внутренние переменные y и R класса Circle
        this.R = R;
    }
}

  ⇑


11. Реализация свойств класса Point.

Следующим шагом нужно создать два свойства класса Point.

Первое свойство возвращает или устанавливает значение координат точки x. Второе свойство возвращает/устанавливает значение координаты y.

Имя первого свойства XX. Имя второго свойства YY.

Листинг свойств XX и YY следующий:

// свойство, которое возвращает/устанавливает координату x
public float XX
{
    get { return x; }
    set { x = value; }
}

// свойство, которое возвращает/устанавливает координату y
public float YY
{
    get { return y; }
    set { y = value; }
}

После такого описания свойства XX и YY можно использовать. Далее приведен пример использования свойств XX и YY.

...

Point p = new Point(5.2f, 6.35f); // создание объекта типа Point
float x,y;

x = p.XX; // x = 5.2
y = p.YY; // y = 6.35

// переопределить значения
p.XX = 2.33f;
p.YY = -3.8f;

x = p.XX; // x = 2.33
y = p.YY; // y = -3.8

...

  ⇑


12. Реализация свойств класса Circle.

Аналогичным образом описываются свойства класса Circle. Первое свойство читает/устанавливает значение радиуса R. Второе свойство читает/устанавливает значение точки, которая есть центром кола (класс Point).

// свойства класса Circle
// свойство, которое возвращает значение радиуса окружности R
public float RR
{
    get { return R; }
    set { R = value; }
}

// свойство, которое возвращает значение точки типа Point, которая есть центром окружности
public Point PP
{
    get
    {
        Point p;
        p = new Point(x, y);
        return p;
    }

    set
    {
        x = value.XX;
        y = value.YY;
    }
}

В нижеследующем листинге описывается пример использования свойств PP и RR.

// создание объекта, в котором значение полей x = 5.5; y = -2.3; R = 12.8
Circle c = new Circle(5.5f, -2.3f, 12.8f);
float x, y, R;

// доступ к свойству PP класса Circle
x = c.PP.XX; // x = 5.5
y = c.PP.YY; // y = -2.3

// доступ к свойству RR
R = c.RR; // R = 12.8
c.RR = -20.85f;

  ⇑


13. Реализация методов интерфейса ICloneable в классах.

Если реализовать интерфейс ICloneable, то можно обеспечить глубокое копирование объектов.

В нижеследующем примере осуществляется поверхностное копирование объектов:

Point p1 = new Point(5.3f, -6.8f);
Point p2;

// поверхностное копирование
p2 = p1; // оба объекта указывают на один участок памяти

Интерфейс ICloneable представляет один метод для реализации. Этот метод называется Clone(). Этот метод нужно реализовать в классах Point и Circle. Реализация метода работает по одинаковому принципу.

Прежде всего нужно изменить заголовок класса Point. Вместо текста

class Point

нужно набрать

class Point:ICloneable

Это означает, что в классе Point нужно реализовать единственный метод Clone(). Листинг метода следующий:

// реализация метода Clone() в интерфейсе ICloneable
public object Clone()
{
    Point p = new Point(x, y);
    return p;
}

Так как класс Circle наследует класс Point, который наследует интерфейс ICloneable, то в классе Circle также можно реализовать метод Clone() (но не обязательно).

// Реализация интерфейса ICloneable в классе Circle
public object Clone()
{
    Circle c = new Circle();
    return c;
}

Пример использования метода Clone().

Point p1 = new Point(5.2f, 6.35f); // создание объекта
Point p2;

// глубокое копирование, так как реализован метод Clone()
p2 = (Point)p1.Clone();// для p2 отдельно выделяется память

// класс Circle
Circle c1 = new Circle(3.2f, -8.3f, 11f);
Circle c2 = null;
c2 = (Circle)c1.Clone(); // для c2 отдельно выделяется оперативная память

  ⇑


14. Реализация методов интерфейса IEquatable.

Интерфейс IEquatable реализуется в тех классах, где нужно определить порядок сравнения двух объектов на равенство их значений. В этом интерфейсе определяется только один метод Equals(). Этот метод возвращает значение true, если значение вызывающего объекта есть равным значению другого объекта, который является параметром в методе Equals().

Для класса Point реализуем метод Equals(), который сравнивает на равенство значения переменных x и y.

Листинг метода Equals() для класса Point следующий:

// реализация метода Equals() из интерфейса IEquatable
public bool Equals(Point p2)
{
    if ((this.x == p2.x) && (this.y == p2.y))
        return true;
    else
        return false;
}

Листинг метода Equals() для класса Circle следующий:

// Реализация метода Equals() из интерфейса IEquatable
public bool Equals(Circle c2)
{
    if ((this.x == c2.x) && (this.y == c2.y) && (this.R == c2.R))
        return true;
    else
        return false;
}

В программе метод Equals() для классов можно использовать следующим образом:

// демонстрация метода Equals() для класса Point
Point p1 = new Point(3f, -5.5f);
Point p2;
bool f;

p2 = (Point)p1.Clone();
f = p1.Equals(p2); // f = true

// демонстрация метода Equals() для класса Circle
Circle c1 = new Circle(3.2f, -8.3f, 11f);
Circle c2 = new Circle(3.2f, -8.3f, 11f);
f = c1.Equals(c2); // f = true

  ⇑


15. Реализация метода вычисления площади круга в классе Circle.

Название метода – GetSquare(). Для вычисления площади круга нужно иметь только радиус R. Радиус получается с внутренней переменной R. Результат вычисления есть тип float.

В тексте класса Circle нужно добавить следующий метод:

// Метод, который вычисляет площадь круга
public float GetSquare()
{
    const float pi = 3.1415f;
    float s;
    s = pi * R * R;
    return s;
}

  ⇑


16. Сокращенный листинг класса Point.

Итак, создание классов завершено.

Сокращенный листинг класса Point следующий (детали реализации описываются в предыдущих пунктах):

class Point:ICloneable,IEquatable<Point>
{
    // поля класса объявленные как protected
    protected float x; // координата x точки
    protected float y; // координата y точки

    // конструктор 1 - без параметров
    public Point() { ... }

    // конструктор 2 - с двумя параметрами
    public Point(float nx, float ny) { ... }

    // метод, который возвращает точку с координатами
    public Point GetPoint() { ... }

    // метод, который устанавливает новые значения внутренних переменных
    public void SetXY(float nx, float ny) { ... }

    // свойство, которое возвращает/устанавливает координату x
    public float XX
    {
        get { ... }
        set { ... }
    }

    // свойство, которое возвращает/устанавливает координату y
    public float YY
    {
        get { ... }
        set { ... }
    }

    // реализация метода Clone() в интерфейсе ICloneable
    public object Clone() { ... }

    // реализация метода Equals() из интерфейса IEquatable
    public bool Equals(Point p2) { ... }
}

  ⇑


17. Сокращенный листинг класса Circle.

Низшее приведен листинг класса Circle, в котором скрыты детали реализации. Реализация методов, свойств, конструкторов описывается в предыдущих пунктах.

class Circle:Point // наследует данные класса Point
{
    // поля класса
    private float R; // радиус окружности

    // конструктор 1 - инициализирует поля нулевыми значениями
    public Circle() { ... }

    // конструктор 2 - с тремя параметрами
    public Circle(float nx, float ny, float nR) { ... }

    // методы класса Circle в соответствии с условием задачи
    // метод, который получает новый экземпляр класса типа Circle
    public Circle GetCircle() { ... }

    // метод, который устанавливает новые значения во внутренние поля класса Circle
    public void SetXYR(float x, float y, float R) { ... }

    // свойства класса Circle
    // свойство, которое возвращает значение радиуса окружности R
    public float RR
    {
        get { ... }
        set { ... }
    }

    // свойство, которое возвращает значение точки типа Point, которая есть центром окружности
    public Point PP
    {
        get { ... }
        set { ... }
    }

    // Реализация интерфейса ICloneable
    public object Clone() { ... }

    // Реализация метода Equals() из интерфейса IEquatable
    public bool Equals(Circle c2) { ... }

    // Метод, который вычисляет площадь круга
    public float GetSquare() { ... }
}

  ⇑


18. Программирование обработчика события клика на кнопке «Вычислить«.

Вычисление площади круга осуществляется в момент, когда пользователь сделает клик на кнопке «Вычислить«. Листинг обработчика события клика на кнопке «Вычислить» следующий:

private void button1_Click(object sender, EventArgs e)
{
    Circle c = new Circle();
    float s;

    // заполнить значения R
    c.RR = (float)Double.Parse(textBox1.Text);

    // вызвать метод определения площади круга
    s = c.GetSquare();
    label2.Text = "S = " + s.ToString();
}

Результат работы программы изображен на рисунке 5.

C# Windows Forms Выполнение программы

Рис. 5. Выполнение программы

  ⇑


Связанные темы

  • Интерфейсы. Использование интерфейсов в программах на C#

 


Практическое занятие № 20. Создание классов

1        Цель занятия

Получить практические навыки создания классов в приложении Windows Forms

2        Перечень оборудования и программного обеспечения

Персональный компьютер

Microsoft Office (Word)

Microsoft Visual Studio

3        Краткие теоретические сведения

Классы и объекты

Класс является основой для создания объектов. Объекты являются экземплярами класса.

При определении класса объявляются данные, которые он содержит, и код (методы), работающие с этими данными. Данные и методы, составляющие класс, называются членами класса. Данные содержатся в переменных экземпляра, которые определены классом, а код содержится в методах. В С# определены несколько специфических разновидностей членов класса. Это — переменные экземпляра, статические переменные, константы, методы, конструкторы, деструкторы, индексаторы, события, операторы и свойства.

Непосредственно инициализация данных в объекте (переменных экземпляра) происходит в конструкторе. В классе могут быть определены несколько конструкторов.

Синтаксис класса:

class имя_класса{

тип_доступа тип имя_переменной1;

тип_доступа тип имя_переменной2;

тип_доступа возвращаемый_тип

имя_метода1(список_параметров) {тело_метода}

}

где тип_доступа может быть public, private, protected, internal.

Члены класса с типом доступа public доступны везде за пределами данного класса, с типом доступа protected – внутри членов данного класса и производных, с типом доступа private — только для других членов данного класса. Тип доступа internal применяется для типов, доступных в пределах одной сборки.

Пример 1:

class Animal

{

public string Name;

private double Weight;

protected string Type;

public void Animal(double W, string T, string N)

{

Weight = W;

Type = T;

Name = N;

}

public int GetWeight() { return Weight; }

}

Создание объекта

имя_класса имя_объекта = new имя_класса();

При создании объекта класса происходит вызов соответствующего конструктора класса.

Конструктор и деструктор

Конструктор класса – метод для инициализации объекта при его создании. Он имеет то же имя, что и его класс. В конструкторах тип возвращаемого значения не указывается явно. Конструкторы используются для присваивания начальных значений переменным экземпляра, определенным классом, и для выполнения любых других процедур инициализации, необходимых для создания объекта. Все классы имеют конструкторы независимо от того, определен он или нет. По умолчанию в С# предусмотрено наличие конструктора, который присваивает нулевые значения всем переменным экземпляра (для переменных обычных типов) и значения null (для переменных ссылочного типа). Но если конструктор явно определен в классе, то конструктор по умолчанию использоваться не будет.

имя_класса(список_параметров) {тело_конструктора}

Деструктор – метод, вызывающийся автоматически при уничтожении объекта класса (непосредственно перед “сборкой мусора”). Деструктор не имеет параметров и возвращаемого значения.

~имя_класса() {тело_деструктора}

Пример 2. Создание класса «Животное» с полями: название, вес и прежний вес.

Решение.

Форма Windows-приложения с элементами, позволяющими отображать и обрабатывать значения полей заданного класса:

Описание созданного класса (после класса Form1):

Метод button1_Click() класса Form0, осуществляющий обращение к методам созданного класса:

4        Порядок выполнения работы

4.1        Изучить теоретические сведения и задание к работе.

4.2        В соответствии с вариантом задания создать класс с необходимыми данными (полями) и методами.

4.3        Создать метод обработки данных, осуществляющий обращение к методам созданного класса.

5        Содержание отчета

5.1        Название работы

5.2        Цель работы

5.3        Листинг и скрины отлаженной программы в соответствии с вариантом задания

6        Варианты заданий

6.1        Класс «Квадрат» с полями: центр квадрата и его сторона.

6.2        Класс «Время» с полями: часы, минуты и секунды.

6.3        Класс «Прямоугольник» с полями: верхняя левая и правая нижняя точки.

6.4        Класс «Конус» с полями: радиус окружности основания и высота.

6.5        Класс «Куб» с полями: координаты центра и сторона.

6.6        Класс «Компьютер» с полями: тактовая частота процессора, объем ОЗУ, емкость диска.

6.7        Класс «Служащий» с полями: табельный номер, номер подразделения и оклад.

6.8        Класс «Накладная» с полями: номер, дата отпуска и сумма.

6.9        Класс «Проект» с полями: номер проекта, сумма, дата исполнения.

6.10        Класс «Здание» с полями: количество этажей, подъездов и квартир на этаже.

6.11        Класс «Студент» с полями: ФИО, номер группы, номер зачетки.

6.12        Класс «Дата» с полями: число, номер месяца и две последние цифры года.

6.13        Класс «Вектор на плоскости» с данными проекция вектора на оси X и Y.

6.14        Класс «Окружность» с полями: центр и радиус окружности.

6.15        Класс «Дробь» с полями: числитель и знаменатель.

7        Используемая литература

7.1        Г. Гагарина, Е. В. Кокорева, Б. Д. Виснадул Технология разработки программного обеспечения. Форум, Инфра-М, 2009

7.2        Эндрю Троелсен Язык программирования С# 2010 и платформа .NET 4.0, М., ВИЛЬЯМС, 2011

7.3        А. Марченко C#. Введение в программирование, М, Вильямс, 2009

7.4        http://msdn.microsoft.com/ru-ru/library/67ef8sbd.aspx.

I am trying to add a class to a WinForms project and put my code inside it. However, it causes problems such as scope problems and conflicts at loading the controls

private void InitializeComponent()
{
    this.SuspendLayout();
    // 
    // Chess
    // 
    this.ClientSize = new System.Drawing.Size(292, 266);
    this.Name = "Chess";
    this.Load += new System.EventHandler(this.Chess_Load_1);
    this.ResumeLayout(false);
}

private void Chess_Load_1(object sender, EventArgs e)
{

}

When I add a class, it puts me that automatically and I cant prevent that (it does so as soon as I copy and paste my code to the newly class created, as soon as I move the static main function out of newly pasted code. Than it gives me this error:

Error 1 The item
«obj\Debug\WindowsFormsApplication1.Chess.resources»
was specified more than once in the
«Resources» parameter. Duplicate
items are not supported by the
«Resources» parameter. ChessBoardGame

Rob's user avatar

Rob

45.3k24 gold badges123 silver badges151 bronze badges

asked Mar 12, 2011 at 12:37

NewOrder's user avatar

3

You can define classes after the declaration of Form finishes. You may get an warning if you try to define it before the Form class definition. It should not cause any problem otherwise.

answered Mar 12, 2011 at 12:40

Shamim Hafiz - MSFT's user avatar

1

-Be sure about what you name your class.
-If it is is folders be careful about the folder name as well.

If the names are in use it will not work fine.

For more, you will need to provide more information or even a screen picture.

EDIT: It’s a problem with copy paste.
check this link Same error

answered Mar 12, 2011 at 12:44

Reza M.'s user avatar

Reza M.Reza M.

1,20514 silver badges33 bronze badges

2

Создание объекта класса в WindowsForms C#

WindowsForms — один из самых популярных инструментов для создания графического интерфейса приложений на языке C#. Он обеспечивает программистам широкий набор функций и возможностей для создания функциональных и привлекательных пользовательских интерфейсов в приложениях Windows.

В этой статье мы рассмотрим процесс создания объекта класса в WindowsForms C#. Объекты класса используются для представления элементов пользовательского интерфейса, таких как кнопки, текстовые поля, метки и т.д. Кроме того, объекты класса могут быть использованы для представления пользовательских форм, на которых размещаются все элементы пользовательского интерфейса.

Как создать объект класса?

Для создания нового объекта класса в WindowsForms C# вам необходимо выполнить следующие шаги.

Шаг 1: Создайте новый проект WindowsForms в Visual Studio

Первым шагом для создания объекта класса в WindowsForms C# является создание нового проекта WindowsForms в Visual Studio. Вы можете создать новый проект, выбрав «Windows Forms App (.NET Framework)» в «New Project» диалоговом окне, которое появляется при запуске Visual Studio.

Шаг 2: Разместите элемент управления на форме

Как только вы создали новый проект WindowsForms, вы можете добавить новый элемент управления на форму. Чтобы это сделать, просто перетащите элемент управления из «Toolbox» на форму. В «Toolbox» находятся все доступные элементы управления, которые вы можете использовать в своем приложении.

Шаг 3: Настройте свойства элемента управления

Как только вы разместили элемент управления на своей форме, вы можете настроить свойства этого элемента управления. Свойства отображаются в «Properties» окне, которое находится справа от формы. Вы можете изменять различные свойства элемента управления, такие как его размеры, цвета, шрифты и т.д.

Шаг 4: Создайте новый объект класса

Чтобы создать новый объект класса, вам просто нужно создать новый экземпляр этого класса. Примером объекта класса может служить кнопка. Чтобы создать новый объект класса кнопки, вам нужно выполнить следующий код:

Button myButton = new Button();

Этот код создает новый экземпляр класса кнопки и сохраняет его в переменной «myButton». Теперь вы можете настроить свойства этого элемента управления и добавить его на форму.

Шаг 5: Настройка свойств объекта класса

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

myButton.BackColor = Color.Blue;

Этот код изменяет цвет фона кнопки на синий цвет. Вы можете изменять множество свойств объекта класса, чтобы создать пользовательский интерфейс, отвечающий вашим потребностям.

Шаг 6: Добавление объекта класса на форму

Как только вы настроили свойства объекта класса, вы можете добавить этот объект на форму. Чтобы добавить объект на форму, просто добавьте его в коллекцию элементов управления формы. Ниже приведен код, который добавляет кнопку на форму:

this.Controls.Add(myButton);

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

Заключение

Создание объекта класса в WindowsForms C# — важный шаг в создании пользовательского интерфейса для приложений Windows. Чтобы создать новый объект класса, вам нужно выполнить несколько простых шагов, включая размещение элемента управления на форме и настройку свойств этого элемента управления. После того, как вы создали объект класса, вы можете добавить его на форму для того, чтобы создать комплексный пользовательский интерфейс, отвечающий ваши потребности.

  • C windows forms диалоговое окно
  • C windows system32 backgroundtaskhost exe
  • C windows system32 compmgmt msc что это
  • C windows softwaredistribution download как очистить
  • C windows forms programming in c