Esc (esc) wrote,
Esc
esc

  • Mood:

Я учу C#

Если кого-то вдруг заинтересовало, чем я занимаюсь в последнее время, я изучаю сишарп. По вечерам, дома. И по этому поводу у меня накопилась пара тёплых слов в его адрес. Поскольку они матерные, я их спрячу под кат.



Это, блять, такой пиздец, что просто хуй знает что. Любая простейшая с моей точки зрения задача оборачивается многовечерними битвами с ветряными великанами. Вот например захотел я вставить в окно контрол, выводимый из переменной. В Кларионе это выглядит примерно так:

1. В начале процедуры объявить переменную.
SomeText STRING(20)

2. В структуре окна объявить контрол.
ENTRY(@s20),USE(SomeText)

3. Где-то в теле процедуры присвоить значение переменной
SomeText = 'Красота!'
И вывести содержимое в контрол.
DISPLAY(?SomeText)

ВСЁ.

Интересно, как эта же операция выглядит в сишарпах? Как сто хуёв и все в жопу, вот как она выглядит. Потому что во-первых, с переменной ты вообще ни хуя не сделаешь. Надо класс заводить. Во-вторых, обязательно нужна двухэтажная пропертя с аксессорами. Иначе внутренним интерфейсам цепляться не к чему. В-третьих, не забыть прапертю объявить публичной, иначе долго будешь её искать в этом грёбаном окне Дата Сорсов. По умолчанию-то, всё приватным объявляется. В-четвёртых, ты всё равно ещё будешь 2 дня ебошить своей никчёмной башкой об стол, потому что ты всё пробиндил, как партия велела, но изменения в контроле в переменную попадают, а обратно, из переменной в контрол - хуй. Перероешь, блять, и попробуешь на зуб все возможные методы и праперти как самого контрола, так и байндингсорса. Перечитаешь хелп по три раза. И всё равно хуй с маслом. Чесночным.

В хелпах при этом всё предельно просто. У байндингсорса есть прапертя ControlUpdateMode, которую ставишь в значение OnPropertyChanged и как только значение исходной переменной меняется, содержимое контрола обновляется. Более того, и ставить ничего не надо, ибо данное значение там уже само растёт, по умолчанию. Вот только значение стрингу присваиваешь, а на экране всё тот же постылый хуй. И ни слова, почему он там завёлся. Нигде ни слова, в том числе в интернете.

И только под конец второго вечера битья головой о столешницу я совершенно случайно обнаруживаю в дальних закоулках интернета какое-то упоминание, что оказывается вся эта хуита не фурычит без специального интерфейса. А именно INotifyPropertyChanged. Но в хелпе, со страниц по биндингу и выводу информации в форму, на этот интерфейс ни одной, блять, ссылки. Ни гу-гу. Если типа не знаешь, то и не узнаешь никогда. И во всех примерах одинокая издевательская строчка. Хотя на самом деле выглядит оно вот как (заранее извиняюсь, если не всё гладко, я только учусь).

1. Описать класс со всеми прибабахами.
    internal class ScreenValues : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

        private string someText;
        public string SomeText
        {
            get
            {
                return someText;
            }
            set
            {
                if (someText != value)
              {
                    someText = value;
                    NotifyPropertyChanged("SomeText");
              }
            }
        }

        void ScreenValues()
        {
          someText = "";
        }
    }


2. Забульбенить контрол и байндингсорс к нему.
        TextBox textBox1;
        BindingSource BindingSource1;
...
            textBox1 = new TextBox();
            BindingSource1 = new BindingSource(this.components);
            textBox1.DataBindings.Add(new Binding("Text", BindingSource1, "SomeText", true));


3. После чего всё почти просто, всего лишь с парой дополнительных поклонов.
        ScreenValues values = new ScreenValues();
...
        BindingSource1.DataSource = values;
...
      values.SomeText = "Хуита!";


И за каждой строчкой долгое нудное рытьё по хелпам и гуглу.

Ну чо я могу сказать кроме как ЁБАНЫЙ НАСОС! А не пойти ли мне лучше в ДБА?
Tags: программизмы
Subscribe

  • Пробирает

    Сегодня у нас в эфире странная музыка, которая не вписывается даже в мою обычную концепцию странной музыки. Хотя кому я вру? Всё прекрасно…

  • I am the god of Hellfire, and I bring you...

    Обожаю узнавать первоисточники всяких музыкальных цитат и сэмплов. Вот казалось бы совершенно бесполезная информация. И тем не менее. Как узнаю, так…

  • Ты мне веришь? А что если нет.

    Очень люблю эту песню. Она ужасно романтичная. Может быть даже лучшее, что произвёл советский кинематограф. И Рыбников на мой вкус лучший…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 15 comments

  • Пробирает

    Сегодня у нас в эфире странная музыка, которая не вписывается даже в мою обычную концепцию странной музыки. Хотя кому я вру? Всё прекрасно…

  • I am the god of Hellfire, and I bring you...

    Обожаю узнавать первоисточники всяких музыкальных цитат и сэмплов. Вот казалось бы совершенно бесполезная информация. И тем не менее. Как узнаю, так…

  • Ты мне веришь? А что если нет.

    Очень люблю эту песню. Она ужасно романтичная. Может быть даже лучшее, что произвёл советский кинематограф. И Рыбников на мой вкус лучший…