1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
1

Объявление экземпляра конструктора

23.11.2015, 00:22. Показов 1683. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!

Помогите решить проблему. Хочу создать экземпляр конструктора через вторую форму.
C#
1
2
3
4
5
6
7
8
9
10
11
        private void Form2_Load(object sender, EventArgs e)
        {
 
        }
        private void button1_Click(object sender, EventArgs e)
        {
            ((Form1)this.Owner).comboBox1.Items.Add(textBox1.Text);
            ((Form1)this.Owner).comboBox2.Items.Add(textBox1.Text);
            WindowsFormsApplication1.unit qw = new unit(222, 33, 33);
            this.Close();
        }
Но экземпляр qw в первой форме Form1.cs не виден.

Вопрос 2. Как создать экземпляр с названием вместо qw на textBox1.Text

C#
1
WindowsFormsApplication1.unit textBox1.Text = new unit(222, 33, 33);
Миниатюры
Объявление экземпляра конструктора  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 00:22
Ответы с готовыми решениями:

Объявление конструктора
Изучаю книгу Джосьютиса по STL и столкнулся с немного непонятным объявлением конструктора. ...

Странное объявление конструктора
Всем привет! Читаю Дейтела и увидел вот такое объявление конструктора. class Exceptions: public...

Объявление конструктора в WinForms
суть в том. у меня есть класс с .h и .cpp файлами. Где надо объявить конструктор чтобы методы были...

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

14
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 00:29 2
Цитата Сообщение от GivioN Посмотреть сообщение
экземпляр конструктора
А что это такое? Может объект класса?
Цитата Сообщение от GivioN Посмотреть сообщение
Вопрос 2. Как создать экземпляр с названием вместо qw на textBox1.Text
Тоже не ясно как это. Название переменной не может быть переменной.
Цитата Сообщение от GivioN Посмотреть сообщение
Но экземпляр qw в первой форме Form1.cs не виден.
Способов сделать его видимым-множество, они описаны тут, пункт 2. И ниже про события.
0
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
23.11.2015, 00:31 3
Цитата Сообщение от GivioN Посмотреть сообщение
экземпляр конструктора
Даже страшно представить, что это. В любом случае про передачу данных между формами подробно расписано тут
Ответы на 7 самых частых вопросов по WinForms
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
23.11.2015, 00:54  [ТС] 4
ладно, как создать экземпляр класса с помощью кнопки и текстбокс? Имя экземпляра вводится латиницей с текстбокса.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 01:09 5
Цитата Сообщение от GivioN Посмотреть сообщение
ладно, как создать экземпляр класса с помощью кнопки и текстбокс? Имя экземпляра вводится латиницей с текстбокса.
Никак. Создать объект класса можно при помощи оператора new, причем тут кнопка и текстбокс? И имя переменной быть переменной не может никак-это абсурд. У объекта может быть свойство Name или что-то в этом духе, и вот ему уже можно присваивать значение. В общем, вам стоит почитать про самые основы-что такое класс, объект, переменная и тд. Пока что вы, похоже, вообще не понимаете, о чем говорите.
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
23.11.2015, 06:03  [ТС] 6
Спасибо читаю давно основы, но не все понимаю, вот и пишу сюда.
Я понимаю что объекты создаются через оператор new, поэтому и вставляю этот код в обработчик события кнопки:
WindowsFormsApplication1 .unit textBox1 . Text = new unit (222 , 33, 33 );
где textBox1 . Text будет имя экземпляра, значение которого передается с текстбокса.
Если что то не правильно делаю, тогда подскажите как создавать объекты войск с параметрами здоровья, атаки, защиты в моем примере на скрине через форму. То есть создать пехотинца, варвара, всадника и т.д. с параметрами, что бы потом выбрать его в комбобоксе и совершать в дальнейшем на ним действия.

П.С. я не спрашиваю как передавать данные между формами.
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
23.11.2015, 06:36 7
читаю давно основы
ну вот почитайте еще.

как говорил мой учитель по математике: "извращенное мышление"... создать переменную с произвольным именем, кошмар. Вам нужно спроектировать класс "Unit", который бы имел поле? к примеру, TypeUnit, куда бы пользователь и записывал имя этого воина - "пехотинец" или "рыцарь". Затем настраивал его параметры "здоровье", "скорость" - все было бы в этом объекте

Добавлено через 2 минуты
а так "экземпляр конструктора", "varType textBox.1" - вы сделали сегодня мой день!

хотя мб я чего то недопонимаю, просто совсем недавно начал кодить на С#, многих особенностей пока не знаю, может быть это программирование нового поколения, а я застрял в 90ых ?)
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 07:06 8
Цитата Сообщение от GivioN Посмотреть сообщение
Если что то не правильно делаю, тогда подскажите как создавать объекты войск с параметрами здоровья, атаки, защиты в моем примере на скрине через форму. То есть создать пехотинца, варвара, всадника и т.д. с параметрами, что бы потом выбрать его в комбобоксе и совершать в дальнейшем на ним действия.
Примерно так:
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
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
 
namespace WindowsFormsApplication69
{
 
    public partial class Form1 : Form
    {
        List<Unit> units = new List<Unit>() {  new Barbarian("Крэг Хэк"), new Archer("Мепхала"), new Archer("Риланд") }; //создаем список юнитов
        public Form1()
        {
            InitializeComponent();
 
            //добавляем на форму комбобокс, отображающий список юнитов
            ComboBox cb1 = new ComboBox();
            cb1.DataSource = units;
            this.Controls.Add(cb1);
         
            //добавляем кнопку "Атаковать", которая будет вызывать метод Attack для того юнита, который выбран в комбобоксе
            Button btnAttack = new Button() { Text = "Атаковать" };
            btnAttack.Location = new Point(0, 30);
            btnAttack.Click += (s, e) => (cb1.SelectedItem as Unit).Attack();
            this.Controls.Add(btnAttack);
        }
    }
 
    abstract class Unit  //базовый абстрактный класс 
    {
        public string UnitClassName { get; protected set; } //Название класса юнита. Менять можно только в самом этом классе и наследниках, поэтому сеттер protected.
        public string UnitName { get; protected set; } //Личное имя юнита. Со сменой аналогично.
        public override string ToString() //За то, как юнит будет называться в комбобоксе(и не только в нем, на этом методе много что работает), отвечает этот метод
        {
            return String.Format("{0} по имени {1}", UnitClassName, UnitName); 
        }
        public abstract void Attack(); //абстрактный метод атаки-нет смысла писать тут реализацию, ведь каждый юнит атакует по-своему.
    }
    class Barbarian : Unit
    {
        public Barbarian(string name) { UnitClassName = "Варвар"; UnitName = name; } //задаем в конструкторе название класса юнита и личное имя
        public override void Attack() //реализуем метод атаки
        {
            MessageBox.Show(ToString() + " размахивает дубиной");
        }
 
    }
 
    class Archer : Unit //тут все то же самое, только значения другие
    {
        public Archer(string name) { UnitClassName = "Лучник"; UnitName = name; }
        public override void Attack()
        {
            MessageBox.Show(ToString() + " открывает огонь из лука");
        }
    }
}
Добавлено через 4 минуты
Параметры дальше добавите по вкусу. На форму ничего кидать не надо-просто откопировать код и поменять пространство имен на свое.
1
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
23.11.2015, 07:08  [ТС] 9
у меня есть класс unit с полями, в нем же конструктор с параметрами. От его объявил объекты: лучник и рыцарь и вывожу их параметры через комбобокс(на скрыне виден пример). Но еще раз опишу как должна работать программа... нажал кнопку создать война открылась форма: ввел туда в текстбоксы имя: всадник, атака:11, здоровье: 130, защита:20. и создал всадника и его же вывел через комбобоксы с отображением параметров...
Может что то не понимаю,.. может это делается не через экземпляры класса, может через сохранения в файлы или БД...

П.С. умников тут много, толку мало
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 07:12 10
Ну если разные юниты ничем не отличаются, кроме значений параметров-тогда достаточно одного класса, и хранить список объектов этого класса в списке(List) хоть на первой форме, хоть вообще в статическом классе. Но в реальной жизни это, понятное дело, делалось бы через полиморфизм.
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
23.11.2015, 07:18  [ТС] 11
EvilFromHel, вы меня наверное поняли, если это реально сделать, дайте пару линков что курить и куда копать.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 07:27 12
Лучший ответ Сообщение было отмечено GivioN как решение

Решение

Курить MSDN в первую очередь, конкретнее тут пока не скажешь. Ну и + гугл и дальше методом проб и ошибок
1
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
23.11.2015, 10:12 13
у меня есть класс unit с полями, в нем же конструктор с параметрами. От его объявил объекты: лучник и рыцарь и вывожу их параметры через комбобокс(на скрыне виден пример). Но еще раз опишу как должна работать программа... нажал кнопку создать война открылась форма: ввел туда в текстбоксы имя: всадник, атака:11, здоровье: 130, защита:20. и создал всадника и его же вывел через комбобоксы с отображением параметров...
Может что то не понимаю,.. может это делается не через экземпляры класса, может через сохранения в файлы или БД...

П.С. умников тут много, толку мало
выше написал как сделать подобное - класс "юнит, который содержит имя типа юнита и его параметры"

Добавлено через 9 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Unit
    {
        public string name;
        public int health;
        public int atackspeed;
        public int dps;
        public Unit(string a1, int a2, int a3, int a4)
        {
            name = a1;
            health = a2;
            atackspeed = a3;
            dps = a4;
        }
    }
Добавлено через 14 секунд
этого достаточно
0
1 / 1 / 0
Регистрация: 01.11.2015
Сообщений: 29
23.11.2015, 11:10  [ТС] 14
Nekromail2011, ну есть класс с полями, есть конструктор с параметрами и дальше что?

Я так понял суть проблемы вам так и не ясна?
0
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
23.11.2015, 13:00 15
напротив, если я правильно понял, это все дело выглядит так: вот вы нажимаете кнопочку, появляется окошечко, где вы даете имя юниту (рыцарь к примеру), пишите его параметры. Потом нажимаете ОК. у вас появляется объект "рыцарь" и вы можете им пользоваться, выбрать его в выпадающем меню и др...

Добавлено через 4 минуты
в чем проблема? создаете нужное число юнитов, они сохраняются в коллекции, дальше можете делать с ними что хотите... вот пример создания

C#
1
2
3
   public void buttonClick() {
      AllUnits.Add(new Unit(this.textBox1, ConvertTo.Int16(this.textBox2)));
   }
вы кликнули по кнопочке "конструктор юнита", вам открылось окошечко, где вы ввели имя и здоровье воина, потом нажали в нем кнопку "создать", выполнился метод buttonClick, который в AllUnits добавил новоиспеченного воина с параметрами из полей в окошечке
0
23.11.2015, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2015, 13:00
Помогаю со студенческими работами здесь

Создание класса и объявление конструктора
Доброе время суток! Используя в качестве примера http://www.delphibasics.ru/TList.php пытаюсь...

Объявление класса без дефолтного конструктора
Имею некий класс, у которого нет конструктора по умолчанию. Class abc { abc(int){} } Как...

Как разнести в коде объявление объекта и вызов конструктора?
Есть обьект который создает масив, размер передается в коструктор. В другом класе должен быть...

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru