Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2016, 11:38   #21
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И что мешает сделать класс для параметров? Например в событиях же обычно передается один объект EventArgs.

Ну и по-моему удобнее и понятнее Dictionary<компонент, данные> вместо Tag, хоть кастовать не придется.

Для правил тоже можно что-то типа Dictionary<группа, правило/функция>
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 13:17   #22
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Alex11223, у меня и так описаны классы данных для каждой группы правил.
И в самом классе составления новых имён описаны экземпляры этих классов.
Эти экземпляры можно упаковать так, что бы не обращаться к ним напрямую ?

upd:
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
http://www.gunsmoker.ru/2008/10/x-y-z.html
Эта басня мне знакома ... Могу привести аналогию - мой вопрос не поняли (во всяком случае - с первого раза). Хотя я всё доступно объяснял. В двух форматах.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 21.11.2016 в 14:17.
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 14:59   #23
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В общем как я понял вы пытаетесь изобрести Binding'и.
Тогда стоит посмотреть на WPF, там это просто делается.
Ну или посмотреть на MVC/MVP/(?)MVVM и как их реализовывать в винформс.

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
в обработчике события у меня 16 кейсов под switch ((sender as TextBox).Name)
А чем это лучше 16 обработчиков?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 15:10   #24
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Alex11223, как я понял - на шарпе я не смогу получить то, чего я ищу ... Что же, - ладно, и так сойдёт.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А чем это лучше 16 обработчиков?
Менее громоздко, и более аккуратно, нежели 16 обработчиков. В рамках редактора кода проще свернуть одну функцию, чем 16.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 15:53   #25
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

шарп и с++ разные вещи
если хотите как в с++ так и пишите на с++, все

хотите тут тогда надо просто рассказать что к чему и что надо
вы видите уже второй день никто не может понять

вот и я и Alex11223 про биндинги подумали
а может оно и не так...

хотите разобраться - поясните нормально, без си и без сиси ))
come-on вне форума Ответить с цитированием
Старый 21.11.2016, 16:06   #26
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Но конечно лучше не извращаться и велосипедить, а посмотреть на биндинги или реализации MVC/MVP.

Код:
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication5
{

    public partial class Form1 : Form
    {
        private readonly Parameters _parameters = new Parameters();

        public Form1()
        {
            InitializeComponent();

            textBox1.Tag = nameof(_parameters.Opt1);
            textBox2.Tag = nameof(_parameters.Opt2);
            textBox3.Tag = nameof(_parameters.Opt3);

            var tboxes = new[]
            {
                textBox1, textBox2, textBox3
            };

            foreach (var textBox in tboxes)
            {
                textBox.TextChanged += TextBox_TextChanged;

                textBox.Text = ReflectionHelper.GetPropValue<string>(_parameters, textBox.Tag.ToString());
            }
        }

        private void TextBox_TextChanged(object sender, EventArgs eventArgs)
        {
            var tbox = sender as TextBox;
            ReflectionHelper.SetPropValue(_parameters, tbox.Tag.ToString(), tbox.Text);
        }
    }

    static class ReflectionHelper
    {
        public static T GetPropValue<T>(object obj, string propName)
        {
            return (T) obj.GetType().GetProperty(propName).GetValue(obj, null);
        }

        public static void SetPropValue(object obj, string propName, object value)
        {
            obj.GetType().GetProperty(propName).SetValue(obj, value, null);
        }
    }

    class Parameters
    {
        public string Opt1 { get; set; } = "";
        public string Opt2 { get; set; } = "42";
        public string Opt3 { get; set; } = "Hello";
    }
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 16:18   #27
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
если хотите как в с++ так и пишите на с++
Задача - написать проект на C#. Я выполняю эту задачу, и ищу наиболее комфортные способы реализации.

Цитата:
Сообщение от come-on Посмотреть сообщение
вы видите уже второй день никто не может понять
А в каком месте не понятны мои объяснения ?
Теперь я понял, что то, что мне нужно - этого в шарпе просто нет. Может в C++ это и называется биндингом, но я изначально учил это как "запись адреса переменной", чем оно по сути и является.
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... реальный код на C++ :
Код:
int x=100500; // что нибудь
int y=&x; // в переменную Y сохраняется АДРЕС, или ССЫЛКА на переменную X
y=9000; // после выполнения этой операции переменная X будет равна этому же значению
x=0; // после выполнения этой операции переменная Y будет равна этому же значению
Ровно то же самое я писал псевдо-кодом много ранее:
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... Абстрактно:
Код:
textBox1.Tag=example.assigntext; // это должно быть сохранение ссылки на значение
// ...
textBox1.Tag="Hello, world !"; // при этом example.assigntext должно измениться
На C++ так будет работать, если при записи значения перед example.assigntext поставить амперсанд (&) ...
В обоих случаях я указывал, что такое можно делать на C++, и спрашивал, есть ли такое на C#.
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... Я знаю, что такое можно сделать на С++, спрашиваю про аналог на C# ...
Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
... вот вам реальный код на C++ : ... Как такое организовать на C# ? ...
С первого раза меня не поняли все. Хотя по сути оба раза я написал одно и то же.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 21.11.2016, 16:22   #28
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

все равно что со столбом поговорили))
come-on вне форума Ответить с цитированием
Старый 21.11.2016, 16:23   #29
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от OmgaBerkut Посмотреть сообщение
Может в C++ это и называется биндингом
нет, биндинг это другое. Гугл сломался?
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
https://www.tutorialspoint.com/wpf/wpf_data_binding.htm
http://www.wpf-tutorial.com/data-bin...o-bound-world/
http://www.wpf-tutorial.com/data-bin...e-datacontext/
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.11.2016, 16:29   #30
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

если у автора винформс то ему другой биндинг
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx

сча нас пошлют ))
come-on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции Diana528 Общие вопросы C/C++ 1 18.04.2013 21:56
вызов функции -Anton- Microsoft Office Excel 2 09.06.2011 14:18
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Вызов функции new player БД в Delphi 5 07.10.2010 13:01
Вызов функции MarSeON PHP 2 01.08.2008 20:22