С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129

Проверка суммы слагаемых

20.11.2016, 15:53. Показов 1683. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть три числа, если третье число больше нуля, то как запретить в сумме первых двух чисел быть меньше пяти?

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

Вот тестовый проект, думаю там все понятно будет:
Кликните здесь для просмотра всего текста
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
        static string a = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
 
        public Form1()
        {
            InitializeComponent();
            textBox1.Text = a;
        }
 
        int z;
        int x;
        int c;
 
        string[] s = a.Split(',');
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            a = textBox1.Text;
            textBox1.Text = "";
 
            if (e.Button == MouseButtons.Left)
            {              
                if (z < 5)
                {
                    z++;
                    s[0] = z.ToString();
                }
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (z > 0)
                {
                    z--;
                    s[0] = z.ToString();
                }
            }
            foreach (string s1 in s) textBox1.Text += s1 + ",";
            textBox1.Text = textBox1.Text.Substring(0, textBox1.TextLength - 1);
 
            proverka();
 
            button1.Text = z.ToString();
        }
 
        private void button2_MouseDown(object sender, MouseEventArgs e)
        {
            a = textBox1.Text;
            textBox1.Text = "";
 
            if (e.Button == MouseButtons.Left)
            {
                if (x < 5)
                {
                    x++;
                    s[1] = x.ToString();
                }
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (x > 0)
                {
                    x--;
                    s[1] = x.ToString();
                }
            }
            foreach (string s1 in s) textBox1.Text += s1 + ",";
            textBox1.Text = textBox1.Text.Substring(0, textBox1.TextLength - 1);
 
            proverka();
 
            button2.Text = x.ToString();
        }
 
        void proverka()
        {
            int b = Convert.ToInt32(s[0]) + Convert.ToInt32(s[1]);
            if (b > 4)
            {
                button3.Enabled = true;
            }
            else
            {
                button3.Enabled = false;
            }
        }
 
        private void button3_MouseDown(object sender, MouseEventArgs e)
        {
            a = textBox1.Text;
            textBox1.Text = "";
 
            if (e.Button == MouseButtons.Left)
            {
                if (c < 5)
                {
                    c++;
                    s[2] = c.ToString();
                }
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (c > 0)
                {
                    c--;
                    s[2] = c.ToString();
                }
            }
            foreach (string s1 in s) textBox1.Text += s1 + ",";
            textBox1.Text = textBox1.Text.Substring(0, textBox1.TextLength - 1);
 
            button3.Text = c.ToString();
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2016, 15:53
Ответы с готовыми решениями:

Проверка контрольной суммы файлов Excel
Добрый день. В своем приложении написал небольшой модуль, который работает с ftp. Загружает с сервера, отправляет, а также реализована...

Представить число N в виде суммы M натуральных слагаемых так, чтобы сумма синусов слагаемых была максимальной
Даны натуральные числа N и M. Нужно представить число N в виде суммы M натуральных слагаемых так, чтобы сумма синусов этих слагаемых была...

Делимость суммы биномиальных слагаемых
При всех ли n\geq 2 число \sum_{k=1}^{n}k{C}^{k}{}_{2n} делится на 8?

9
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
20.11.2016, 19:20
Цитата Сообщение от therud Посмотреть сообщение
запретить быть меньше пяти, какими условиями можно сделать?
А в реальном мире Вы себе это как представляете?
Как единице и двойке запретить быть в сумме меньше пяти?
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
21.11.2016, 10:14  [ТС]
Serg34, Вы не совсем поняли что я имел виду, скорее всего я не правильно поставил вопрос

Там условие, числа картинок, если сумма чисел двух первых изображений равна больше пяти, тогда в третье изображение число может быть больше нуля, но если сумма третьего числа изображения больше нуля, то сумма первых двух чисел изображений уже не может изменяться меньше пяти.

Сделал все кроме последней проверки, когда третье число равно больше нуля, как продолжить не могу понять, может не в ту сторону капаю?

Вот что получилось у меня на функции кнопок
Кликните здесь для просмотра всего текста
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
        public Form1()
        {
            InitializeComponent();
            button3.Enabled = false;
        }
 
        int a = 0;
        int b = 0;
        int c = 0;
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (a < 5)
                    a++;
                button1.Text = a.ToString();
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (a > 0)
                    a--;
                button1.Text = a.ToString();
            }
 
            proverka();
        }
 
        private void button2_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (b < 5)
                    b++;
                button2.Text = b.ToString();
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (b > 0)
                    b--;
                button2.Text = b.ToString();
            }
 
            proverka();
        }
 
        private void button3_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (c < 5)
                    c++;
                button3.Text = c.ToString();
            }
 
            if (e.Button == MouseButtons.Right)
            {
                if (c > 0)
                    c--;
                button3.Text = c.ToString();
            }
 
            proverka();
        }
И проверка условий
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        void proverka()
        {
            if (a + b >= 5)
            {
                label1.Text = "Сумма пяти, разрешить продолжение";
                button3.Enabled = true;
            }
            else
            {
                label1.Text = "Меньше суммы пяти, запретить продолжение";
                button3.Enabled = false;
            }
 
            if (c > 0)
                label2.Text = "разрешить продолжение";
            else
                label2.Text = "запретить продолжение"; 
        }


Где именно и как должна выглядеть проверка, которая не будет давать возможность вычитать сумму a + b, если c больше нуля?

Добавлено через 2 часа 4 минуты
Вроде как разобрался, только очень масштабно вышло:
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
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (a < 5)
                    a++;
                button1.Text = a.ToString();
            }
 
            if (c <= 0)
            {
                if (a + b > 5)
                {
                    Summa(sender, e);
                }
                else
                {
                    if (e.Button == MouseButtons.Right)
                    {
                        Summa(sender, e);
                    }
                }
            }
            else
            {
                if (a + b > 5)
                {
                    if (e.Button == MouseButtons.Right)
                    {
                        Summa(sender, e);
                    }
                }
            }
 
            proverka();
        }
C#
1
2
3
4
5
6
7
8
9
        void Summa(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (a > 0)
                    a--;
                button1.Text = a.ToString();
            }
        }
0
 Аватар для Pro100Tom
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
21.11.2016, 14:18
Не мог бы на примере показать? Различные сценарии, варианты, конкретные случаи. =)
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
21.11.2016, 21:47  [ТС]
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Не мог бы на примере показать?
Да конечно вот прямая ссылка на калькулятор под игру в нем уже выбрал данную ситуацию по теме
0
 Аватар для Pro100Tom
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
21.11.2016, 23:26
Хорошая задачка. Мне нравится. Ща подумаю.
1
 Аватар для Pro100Tom
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
22.11.2016, 02:00
Лучший ответ Сообщение было отмечено Даценд как решение

Решение

Сделал. Только задача реально сложная. Работал с событиями. Советую внимательно прогуляться отладчиком (причём в настройках советую включить разрешение отладчика заходить в тела свойства полей).

Создал классы:
Talent - класс, который способен хранить текущее числовое значение, минимум и максимум. Имеет три события.
TalentGroup - класс, который владеет логикой управления экземплярами класса Talent. Есть два списка:
mainTalents - (Health, Mana), таланты, которые можно повышать сразу.
bonusTalents - таланты, которые открываются только, когда достигли определённого значения в списке mainTalents. Причём в обе категории можно добавлять любое количество талантов (не игрался особо, возможно будут баги).
Game - класс игры, в котором создаётся экземпляр класса TalentGroup и создание нескольких экземпляров класса Talent.

Недостатки:
1). отсутствие динамического создания групп.
2). отсутствие динамической связи между кнопками и талантами. (Проект писал в WPF поэтому можно реализовать DataBinding - попробуй!)
3). создал только одну группу талантов (желательно создать несколько, чтобы посмотреть, откроется ли вторая группа, после того, как наберётся нужное количество очков в предыдущей)
4). отсутствие unit тестов.

MainWindow.xaml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Window x:Class="Talents.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Talents"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <WrapPanel Name="wrapPanel0" Margin="10">
            <Button Name="button0" Content="Health" Margin="10" Width="100" Click="button0_Click"  MouseRightButtonUp="button0_MouseRightButtonUp"></Button>
            <Button Name="button1" Content="Mana" Margin="10" Width="100" Click="button1_Click" MouseRightButtonUp="button1_MouseRightButtonUp"></Button>
            <Button Name="button2" Content="Spirit" Margin="10" Width="100" Click="button2_Click" MouseRightButtonUp="button2_MouseRightButtonUp"></Button>
        </WrapPanel>
        
    </Grid>
</Window>
MainWindow.xaml.cs
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
69
70
71
72
73
74
75
76
77
78
79
80
81
using System.Windows;
using System.Windows.Input;
 
namespace Talents
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Game game;
 
        public MainWindow()
        {
            InitializeComponent();
            InitializeStuff();
        }
 
        private void InitializeStuff()
        {
            game = new Game();
            game.SetupTalents();
 
            button0.IsEnabled = game.Talent0.IsUnlocked;
            button1.IsEnabled = game.Talent1.IsUnlocked;
            button2.IsEnabled = game.Talent2.IsUnlocked;
 
            button0.Content = "Health " + GetProgress(game.Talent0);
            button1.Content = "Mana " + GetProgress(game.Talent1);
            button2.Content = "Spirit " + GetProgress(game.Talent2);
 
            game.Talent2.NotifyUnlockedStateChanged += Talent2_NotifyStateChanged;
        }
 
        private void Talent2_NotifyStateChanged(Talent talent)
        {
            button2.IsEnabled = game.Talent2.IsUnlocked;
        }
 
        private void button0_Click(object sender, RoutedEventArgs e)
        {
            game.Talent0.Learn();
            button0.Content = "Health " + GetProgress(game.Talent0);
        }
 
        private void button0_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            game.Talent0.Unlearn();
            button0.Content = "Health " + GetProgress(game.Talent0);
        }
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            game.Talent1.Learn();
            button1.Content = "Mana " + GetProgress(game.Talent1);
        }
 
        private void button1_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            game.Talent1.Unlearn();
            button1.Content = "Mana " + GetProgress(game.Talent1);
        }
 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            game.Talent2.Learn();
            button2.Content = "Spirit " + GetProgress(game.Talent2);
        }
 
        private void button2_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            game.Talent2.Unlearn();
            button2.Content = "Spirit " + GetProgress(game.Talent2);
        }
 
        private string GetProgress(Talent talent)
        {
            return "(" + talent.CurrentValue + "/" + talent.MaxValue + ")";
        }
    }
}
Settings.cs
C#
1
2
3
4
5
6
7
8
namespace Talents
{
    static class Settings
    {
        public static readonly int TalentMax = 5;
        public static readonly int MinValueNeededToUnlockBonusTalent = 5;
    }
}
Talent.cs
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using static Talents.Settings;
 
namespace Talents
{
    class Talent
    {
        int currentValue, minValue, maxValue;
        bool isUnlocked, canUnlearn;
 
        public delegate void ValueChangedEventHandler();
        public event ValueChangedEventHandler NotifyValueChanged;
 
        public delegate void StateChangedEventHandler(Talent talent);
        public event StateChangedEventHandler NotifyUnlockedStateChanged;
        public event StateChangedEventHandler NotifyUnlearnStateChanged;
 
        public Talent()
        {
            CurrentValue = 0;
            MinValue = 0;
            MaxValue = TalentMax;
            CanUnlearn = true;
        }
 
        public void Learn()
        {
            CurrentValue++;
        }
 
        public void Unlearn()
        {
            NotifyUnlearnStateChanged?.Invoke(this);
 
            if (CanUnlearn)
            {
                CurrentValue--;
            }
        }
 
        public int CurrentValue
        {
            get
            {
                return currentValue;
            }
 
            private set
            {
                if (currentValue == value || value > maxValue || value < minValue)
                {
                    return;
                }
 
                currentValue = value;
                NotifyValueChanged?.Invoke();
            }
        }
 
        public int MaxValue
        {
            get
            {
                return maxValue;
            }
 
            set
            {
                maxValue = value;
            }
        }
 
        public int MinValue
        {
            get
            {
                return minValue;
            }
 
            set
            {
                minValue = value;
            }
        }
 
        public bool IsUnlocked
        {
            get
            {
                return isUnlocked;
            }
 
            set
            {
                if (IsUnlocked != value)
                {
                    isUnlocked = value;
                    NotifyUnlockedStateChanged?.Invoke(this);
                }
            }
        }
 
        public bool CanUnlearn
        {
            get
            {
                return canUnlearn;
            }
 
            set
            {
                canUnlearn = value;
            }
        }
    }
}
TalentGroup.cs
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System.Collections.Generic;
using System.Linq;
 
namespace Talents
{
    class TalentGroup
    {
        List<Talent> mainTalents, bonusTalents;
        bool isUnlocked, isBonusUnlocked;
        int minValueNeededToUnlockBonusTalent;
        int totalMainTalentValue, totalBonusTalentValue;
 
        public TalentGroup()
        {
            MainTalents = new List<Talent>();
            BonusTalents = new List<Talent>();
 
            MinValueNeededToUnlockBonusTalent = Settings.MinValueNeededToUnlockBonusTalent;
        }
 
        public void AddTalentToMain(Talent talent)
        {
            talent.NotifyValueChanged += MainTalent_NotifyValueChanged;
            talent.NotifyUnlearnStateChanged += Talent_NotifyUnlearnStateChanged;
 
            talent.IsUnlocked = true;
            MainTalents.Add(talent);
        }
 
        private void Talent_NotifyUnlearnStateChanged(Talent talent)
        {
            RecalculateMainTalentTotalValue();
            RecalculateBonusTalentTotalValue();
 
            talent.CanUnlearn = TotalBonusTalentValue == 0 || TotalMainTalentValue > MinValueNeededToUnlockBonusTalent;
        }
 
        private void MainTalent_NotifyValueChanged()
        {
            RecalculateMainTalentTotalValue();
        }
 
        private void RecalculateMainTalentTotalValue()
        {
            TotalMainTalentValue = MainTalents.Select(t => t.CurrentValue).Aggregate((x, y) => x + y);
        }
 
        private void RecalculateBonusTalentTotalValue()
        {
            TotalBonusTalentValue = BonusTalents.Select(t => t.CurrentValue).Aggregate((x, y) => x + y);
        }
 
        private int GetAllTalentTotalValue(bool recalculate = true)
        {
            if (recalculate)
            {
                RecalculateMainTalentTotalValue();
                RecalculateBonusTalentTotalValue();
            }
 
            return TotalMainTalentValue + TotalBonusTalentValue;
        }
 
        public void AddTalentToBonus(Talent talent)
        {
            talent.IsUnlocked = false;
            BonusTalents.Add(talent);
        }
 
        internal List<Talent> MainTalents
        {
            get
            {
                return mainTalents;
            }
 
            set
            {
                mainTalents = value;
            }
        }
 
        internal List<Talent> BonusTalents
        {
            get
            {
                return bonusTalents;
            }
 
            set
            {
                bonusTalents = value;
            }
        }
 
        public bool IsUnlocked
        {
            get
            {
                return isUnlocked;
            }
 
            set
            {
                isUnlocked = value;
            }
        }
 
        public int MinValueNeededToUnlockBonusTalent
        {
            get
            {
                return minValueNeededToUnlockBonusTalent;
            }
 
            set
            {
                minValueNeededToUnlockBonusTalent = value;
            }
        }
 
        public int TotalMainTalentValue
        {
            get
            {
                return totalMainTalentValue;
            }
 
            set
            {
                totalMainTalentValue = value;
 
                IsBonusUnlocked = TotalMainTalentValue >= MinValueNeededToUnlockBonusTalent;
            }
        }
 
        private bool IsBonusUnlocked
        {
            get
            {
                return isBonusUnlocked;
            }
 
            set
            {
                if (IsBonusUnlocked != value)
                {
                    isBonusUnlocked = value;
 
                    foreach (var talent in BonusTalents)
                    {
                        talent.IsUnlocked = value;
                    }
                }
            }
        }
 
        public int TotalBonusTalentValue
        {
            get
            {
                return totalBonusTalentValue;
            }
 
            set
            {
                totalBonusTalentValue = value;
            }
        }
    }
}
Game.cs
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
69
70
71
72
73
namespace Talents
{
    class Game
    {
        TalentGroup talentGroup;
        Talent talent0, talent1, talent2;
 
        public void SetupTalents()
        {
            TalentGroup = new TalentGroup() { IsUnlocked = true };
 
            Talent0 = new Talent();
            Talent1 = new Talent();
            Talent2 = new Talent();
 
            TalentGroup.AddTalentToMain(Talent0);
            TalentGroup.AddTalentToMain(Talent1);
            TalentGroup.AddTalentToBonus(Talent2);
        }
 
        internal TalentGroup TalentGroup
        {
            get
            {
                return talentGroup;
            }
 
            set
            {
                talentGroup = value;
            }
        }
 
        internal Talent Talent0
        {
            get
            {
                return talent0;
            }
 
            set
            {
                talent0 = value;
            }
        }
 
        internal Talent Talent1
        {
            get
            {
                return talent1;
            }
 
            set
            {
                talent1 = value;
            }
        }
 
        internal Talent Talent2
        {
            get
            {
                return talent2;
            }
 
            set
            {
                talent2 = value;
            }
        }
    }
}
Вложения
Тип файла: zip Talents.zip (77.0 Кб, 3 просмотров)
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
22.11.2016, 05:37  [ТС]
Pro100Tom, у меня просто слов нет что бы выразить свою благодарность
вариант суперский!
но никогда раньше не писал в WPF, нужно будет набраться опыта в освоение, надеюсь вашего примера мне будет достаточно)
за твой труд у меня теперь нет другого выхода как только вникнуть в твой вариант и довести все до конца.

Пару вопросов конечно осталось, возможно ли будет сделать текстовый вывод талантов нажатых элементов? как в адресной строке калькулятора по ссылке которой я давал, под WF решение есть и работает выводит в текстбокс, но оно очень сомнительное:
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
        public MainWindow()
        {
            InitializeComponent();
            string a = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0";
        }
 
        int b = 0;
 
        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                a = textBox1.Text;
                textBox1.Text = "";
                string[] s = a.Split(',');
                if (b < 5)
                {
                    b++;
                    s[2] = b.ToString();
                }
                foreach (string s1 in s) textBox1.Text += s1 + ",";
                textBox1.Text = textBox1.Text.Substring(0, textBox1.TextLength - 1);
            }
 
            button1.Text = b.ToString();
        }
А при изменение текстбокса делать проверку и подстраивать элементы талантами, проще говоря если зайти на ссылку калькулятора выбрать несколько элементов, то в адресной строке можно увидеть изменение талантов, если такую ссылку открыть в новой адресной строке, то элементы уже будут построены талантами из адресной строки.

Добавлено через 4 минуты
Цитата Сообщение от Pro100Tom Посмотреть сообщение
можно реализовать DataBinding
В чем он поможет в данной ситуации?)
0
 Аватар для Pro100Tom
154 / 31 / 11
Регистрация: 29.10.2012
Сообщений: 397
22.11.2016, 13:01
Если работаешь с web, то значания талантов нужно хранить в базе данных. А потом написать логику визуализации выбранных талантов на страничке калькулятора.

Добавлено через 2 минуты
Цитата Сообщение от therud Посмотреть сообщение
В чем он поможет в данной ситуации?)
Он поможет тем, что тебе не придётся связывать ручками кнопку и экземпляр класса Talent. Они будут связаны автоматом. То есть свойство IsUnlocked таланта будет связано со свойством кнопки IsEnabled. Как только что-то одно изменится, второе автоматом тоже изменится. Тебе не надо будет писать:
C#
1
2
3
button0.IsEnabled = game.Talent0.IsUnlocked;
            button1.IsEnabled = game.Talent1.IsUnlocked;
            button2.IsEnabled = game.Talent2.IsUnlocked;
а значит сможешь динамично создавать сколь угодно талантов и с ними вместе кнопок. Только надо будет подумать как кнопки будут располагаться. Но это отдельная тема.

Но такое по-моему только на WPF возможно, если не ошибаюсь. На WF нету такого. Хотя может и добавили. В общем, мой тебе совет, абстрагируйся от forms. Вся эта фигня эволюционирует. WPF лучше, хоть и заморочиться кое-где иногда надо. Но документация есть в изобилии.

Добавлено через 7 минут
Но для web ASP подходит лучше. Но я в нём дуб дубом. Там жесть. Но есть классненькие удобные плюшки: html и C# в одном файле, cshtml.
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
22.11.2016, 14:24  [ТС]
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Если работаешь с web
Не, программа не будет работать с web, просто в программе хочу сделать textbox таким же аналогом как и на сайте калькулятора. В две задачи, если поинты изменяются, то и в строке должны изменяться, если в строку вписать значение поинтов, то и эелементы поинтов должны изменятся. В калькуляторе этот пример есть, но там считай вместо textbox идет адресная строка)

Добавлено через 1 минуту
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Вся эта фигня эволюционирует. WPF лучше, хоть и заморочиться кое-где иногда надо. Но документация есть в изобилии.
С твоего примера я понял и стал чутка вникать в работу с WPF, теперь знаю одно что я точно с WF перейду на WPF
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2016, 14:24
Помогаю со студенческими работами здесь

Найти все суммы n слагаемых массива a
дан массив a и он может быть всегда разного размера и заполненный случайными числами дано количество слагаемых для вычисления суммы -...

Написать программу вычисления суммы n слагаемых
1)написать программу вычисления суммы n слагаемых вида x+1, где х-данное число, а i меняется от 1 до n 2)суммы n слагаемых вида...

Нахождение суммы, включая в нее первые k слагаемых
помогите, вот условие

Написать программу нахождения суммы первых k слагаемых
Спецификация ввода: k x Спецификация вывода: значение суммы

Вычислить значения n-го слагаемого Q и суммы n слагаемых последовательности
Здравствуйте. Помогите с задачкой. Язык Си. Для заданного преподавателем варианта задания составьте программу, которая вычисляет...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru