• События скрола в c#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - скоролятся обычно контенты контейнеров а не форм. убедитесь что вы вешаете обработчик действительно на тот контейнер, в котором что то скролите
    2 - используйте точки прерывания, что бы убедиться, что вы вообще попадаете в данный обработчик
    3 - когда то давно, я бы, возможно, начал с размещения строки типа label1.Text = "bingo!"; самой первой в обработчике, и лишь потом бы усложнял логику
    Ответ написан
    Комментировать
  • Работа с массивами (list) и символами?

    @OwDafuq
    List<string> text = ["89192864554","+7926?874?22?44", "vk@yandex.ru" , "vk.com", "youtube"];
    List<string> phones = new List<string>(text.Where(x => x.StartWith("+") || x.StartWith("8")));
    List<string> sites = new List<string>(text.Where(x => x.Contains(".") && !x.Contains("@")));
    List<string> email = new List<string>(text.Where(x => x.Contins("@")));

    Как вариант
    Ответ написан
    7 комментариев
  • Как работает аутентификация через соц. сети на сайтах клиентов через свой сервер?

    Вы правильно понимаете. Но если пользователь уже разрешил доступ к своему аккаунту, то 2 пункт можно пропустить.

    И в 4 пункте происходит не магия, а асинхронный запрос с сайта с hypercomments на серверы того же ВК
    Ответ написан
    7 комментариев
  • Как свернуть процесс в трей на C#?

    Gorily
    @Gorily
    var driver = new ChromeDriver();
    driver.Manage().Window.Minimize();
    Ответ написан
    Комментировать
  • Конфликтуется код с закрытием winform, как устранить?

    Morpheus_God
    @Morpheus_God
    NullReferenceException обычно вылетает если где то есть вызов чего то, но сам объект не создан еще.
    Приведу пример у вас есть класс Person
    class Person
        {
            public string Name;
            public string Surname;
        }

    Вы делаете вот так :
    class Program
        {
           static Person person;
    
            static void Main(string[] args)
            {
                person.Name = "Jim";
    
                Console.WriteLine(person.Name);
                Console.ReadKey();
            }
        }

    Данный код так же выкинет ошибку NullReferenceException. А все потому, что вы не провели инициализацию класса.
    Смотрите свой код. По всей видимости у вас не создается объект. А может и создается но гораздо позже, чем вы пытаетесь его вызвать.
    Ответ написан
    1 комментарий
  • Где прописывать свои функции при работе с Windows Forms?

    Пишите в Form1.cs
    Ответ написан
    Комментировать
  • Как правильно получать логи из внешней DLL?

    freeExec
    @freeExec
    Участник OpenStreetMap
    В классе плагина делаете событие в которые будете слать логи, а основная программа подписывается на это событие у всех плагинов.
    Ответ написан
    Комментировать
  • Есть ли переборщик символов для поиска страниц сайта?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проблема в том что есть страницы, на которые нет ссылок и стандартными утилитами я не могу их собрать.
    Тогда как же Вы знаете, что страницы есть, если у них нет ссылок?!
    Ответ написан
    2 комментария
  • Как посмотреть исходный код .NET в Visual studio?

    @kttotto
    пофиг на чем писать
    Options/Debugging/General поставить галочку в "enable .net framework source stepping". Сразу начнется закачка PDB файла с исходниками. Учтите только что весят они не мало, и нужно будет достаточно места на жестком.

    PS: Если Вы хотите дебажить .net, то нужно сделать Эти настройки.
    Если же Вы хотите просто навигацию по исходнику, тот тут сложнее. Для нормальной навигации нужны ссылки в метаданных на исходники. Это сделали только для core2, но со временем обещают добавить для всех версий. Лично я пользуюсь в решарпере настройкой "navigation to source/decompile methodes", но как вариант есть расширение для vs Ref12, в этом случае, при got to defition в браузере открывается страница на https://referencesource.microsoft.com с исходником.
    Подробнее здесь
    Ответ написан
    Комментировать
  • Windows Forms, как мне достучаться до элементов формы с другого класса?

    Xardch
    @Xardch
    Смените у TextBox свойство Modifiers на public, затем в методе, который должен получать значение TextBox, передавайте экземпляр формы и через неё получайте значение

    public void ShowTextBoxValue(Form1 form)
    {
        MessageBox.Show(form.textBox1.Text);
    }
    Ответ написан
    1 комментарий
  • Как получить доступ к классу?

    Griboks
    @Griboks Куратор тега C#
    Исправьте конструктор следующим образом
    MainWindow owner;
    public Querys(MainWindow owner) {
    this.owner = owner;
    //...
    }
    Ответ написан
    2 комментария
  • Какой есть эффективный и разумный способ парсинга JSON?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    Пользуюсь простым самописным механизмом:

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    using System.Text;
    
    namespace MyNamespace
    {
        /// <summary>
        /// Выполняет преобразование текста формата JSON
        /// в граф объектов и обратно.
        /// </summary>
        public static class Json
        {
            /// <summary>
            /// Преобразует текст в формате JSON в граф объектов.
            /// </summary>
            /// <param name="text">Исходный текст в формате JSON</param>
            /// <returns>Граф объектов</returns>
            public static object Parse(string text)
            {
                return new JsonParser().Parse(text);
            }
    
            /// <summary>
            /// Преобразует граф объектов в текст формата JSON. Поддерживаются:
            /// - null
            /// - string
            /// - bool
            /// - int, double, decimal
            /// - List˂object˃
            /// - Dictionary˂string,object˃
            /// </summary>
            /// <param name="value">Граф объектов</param>
            /// <returns>Текст формата JSON</returns>
            public static string Stringify(object value)
            {
                return new JsonSerializer().ToString(value);
            }
        }
    
        class JsonSerializer
        {
            public string ToString(object obj)
            {
                return ObjectToString(obj);
            }
    
            private string ObjectToString(object o)
            {
                if (o == null)
                    return "null";
    
                if (o is bool b)
                    return b ? "true" : "false";
    
                if (o is int i)
                    return i.ToString(CultureInfo.InvariantCulture);
    
                if (o is double db)
                    return db.ToString(CultureInfo.InvariantCulture);
    
                if (o is decimal dc)
                    return dc.ToString(CultureInfo.InvariantCulture);
    
                if (o is List<object> l)
                    return ListToString(l);
    
                if (o is Dictionary<string, object> d)
                    return DictionaryToString(d);
    
                if (o is string s)
                    return StringToString(s);
    
                throw new ArgumentOutOfRangeException(nameof(o), o, "Unknown type.");
            }
    
            private static string StringToString(string s)
            {
                return "\"" + s.Replace("\\", "\\\\").Replace("\"", "\\\"").Replace("\r", "\\r").Replace("\n", "\\n") + "\"";
            }
    
            private string ListToString(List<object> a)
            {
                var sb = new StringBuilder();
                sb.Append("[");
                for (var i = 0; i < a.Count; ++i)
                {
                    if (i > 0)
                        sb.Append(", ");
    
                    var e = a[i];
                    sb.Append(ObjectToString(e));
                }
                sb.Append("]");
                return sb.ToString();
            }
    
            private string DictionaryToString(Dictionary<string, object> d)
            {
                var sb = new StringBuilder();
                sb.Append("{");
                var isFirst = true;
                foreach (var pair in d)
                {
                    if (isFirst)
                        isFirst = false;
                    else
                        sb.Append(", ");
    
                    sb.Append(StringToString(pair.Key) + ": ");
                    sb.Append(ObjectToString(pair.Value));
                }
                sb.Append("}");
                return sb.ToString();
            }
        }
    
        class JsonParser
        {
            private string Source;
    
            private int Offset;
    
            public object Parse(string source)
            {
                Source = source;
                Offset = 0;
                return ReadObject();
            }
    
            private object ReadObject()
            {
                SkipWhitespace();
                var c = Source[Offset];
                ++Offset;
                object item;
                switch (c)
                {
                    case '[':
                        item = ReadArray();
                        break;
                    case '{':
                        item = ReadDictionary();
                        break;
                    case '\"':
                    case '\'':
                        --Offset;
                        item = ReadString();
                        break;
                    case 'n':
                        item = ReadLiteral("ull", null);
                        break;
                    case 't':
                        item = ReadLiteral("rue", true);
                        break;
                    case 'f':
                        item = ReadLiteral("alse", false);
                        break;
                    default:
                        if (Char.IsDigit(c) || c == '-' || c == '.')
                        {
                            --Offset;
                            item = ReadNumber();
                        }
                        else
                            throw new FormatException();
                        break;
                }
    
                return item;
            }
    
            private Dictionary<string, object> ReadDictionary()
            {
                var result = new Dictionary<string, object>();
                while (true)
                {
                    SkipWhitespace();
                    var c = Source[Offset];
                    if (c == '}')
                    {
                        ++Offset;
                        break;
                    }
    
                    var key = ReadString();
                    SkipWhitespace();
                    c = Source[Offset];
                    if (c != ':')
                        throw new FormatException();
    
                    ++Offset;
                    var value = ReadObject();
                    result.Add(key, value);
    
                    SkipWhitespace();
                    c = Source[Offset];
                    if (c == ',')
                        ++Offset;
                    else if (c == '}')
                    {
                        ++Offset;
                        break;
                    }
                    else
                        throw new FormatException();
                }
    
                return result;
            }
    
            private void SkipWhitespace()
            {
                while (Offset < Source.Length && Char.IsWhiteSpace(Source[Offset]))
                {
                    ++Offset;
                }
            }
    
            private decimal ReadNumber()
            {
                var sb = new StringBuilder();
    
                while (Offset < Source.Length)
                {
                    var c = Source[Offset];
                    if (Char.IsDigit(c) || c == '-' || c == '.')
                        sb.Append(c);
                    else
                        break;
    
                    ++Offset;
                }
    
                return decimal.Parse(sb.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture);
            }
    
            private object ReadLiteral(string literal, object value)
            {
                if (Source.Length - Offset > literal.Length)
                {
                    if (Source.Substring(Offset, literal.Length) == literal)
                    {
                        Offset += literal.Length;
                        return value;
                    }
                }
    
                throw new FormatException();
            }
    
            private string ReadString()
            {
                SkipWhitespace();
    
                var result = new StringBuilder();
    
                var quote = '\0';
                var c = Source[Offset];
                if (c == '\"' || c == '\'')
                {
                    quote = c;
                }
                else if (!Char.IsLetter(c))
                    throw new FormatException();
                else
                    result.Append(c);
    
                while (true)
                {
                    ++Offset;
                    c = Source[Offset];
                    if (quote == '\0')
                    {
                        if (!Char.IsLetter(c) && !Char.IsDigit(c) && c != '_')
                            break;
                    }
                    else if (c == quote)
                    {
                        ++Offset;
                        break;
                    }
                    else if (c == '\\')
                    {
                        ++Offset;
                        c = Source[Offset];
                        if (c == 'u')
                        {
                            c = ReadUnicodeChar();
                        }
                    }
    
                    result.Append(c);
                }
    
                return result.ToString();
            }
    
            private char ReadUnicodeChar()
            {
                ++Offset; // u
                if (Source.Length - Offset < 4)
                    throw new FormatException();
    
                var digits = Source.Substring(Offset, 4);
                var result = ParseUnicodeChar(digits);
                Offset += 3; // 4 digits
                return result;
            }
    
            public static char ParseUnicodeChar(string digits)
            {
                if (!digits.ToCharArray().Any(Char.IsDigit))
                    throw new FormatException();
    
                var decValue = Convert.ToInt32(digits, 16);
                var s = Char.ConvertFromUtf32(decValue);
                if (s.Length != 1)
                    throw new FormatException();
    
                return s[0];
            }
    
            private List<object> ReadArray()
            {
                var result = new List<object>();
                while (true)
                {
                    SkipWhitespace();
    
                    var c = Source[Offset];
                    if (c == ']')
                    {
                        ++Offset;
                        break;
                    }
    
                    var obj = ReadObject();
                    result.Add(obj);
    
                    SkipWhitespace();
                    c = Source[Offset];
                    if (c == ',')
                    {
                        ++Offset;
                        continue;
                    }
    
                    if (c == ']')
                    {
                        ++Offset;
                        break;
                    }
                    
                    throw new FormatException();
                }
                
                return result;
            }
        }
    }
    Ответ написан
    1 комментарий
  • Оператор || и == не может применятся к операндам типа стринг и инт?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Нельзя сравнивать строку "..." и число(int).
    Ответ написан
    Комментировать
  • Как сделать консоль в WPF окне?

    petermzg
    @petermzg
    Самый лучший программист
    Консоль это выполнение команд и отображение результатов их исполнения.
    Для ввода команд подойдет TextBox с параметрами TextWrapping="Wrap" и AcceptsReturn="True".
    Отлавливает Enter и на него выполняете команду
    Process proc = new Process();
    proc.StartInfo.FileName = "команда.exe";
    proc.StartInfo.Arguments = "<ее параметры>";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.Start();

    Получаете результат выполнения
    proc.StandardOutput.ReadToEnd()
    и записываете в ваш TextBox
    Ответ написан
    Комментировать
  • Правильная разработка программного обеспечения!?

    @VanKrock
    А тут вложенность и не нужна.
    Вот у вас есть сущность Компания (Company) в вашей компании разве есть страны? Нет, у нее есть офисы (Office)
    А у офисов уже есть адрес (Address) какой то конкретный и на все остальные ему как бы пофиг поэтому вложенность тут не нужна, она понадобится при заполнении например чтобы показать dropbox пользователю, для этого сделайте AddressDataBase какой-нибудь со вложенностью адресов. И у обычно если много офисов, то у них указывают контактные данные

    то есть
    class Company
    {
        public List<Office> Offices {get; set;}
        public string Description {get; set;} //Тут описание вашей компании: год основания там и все такое.
        public Contacts GlobalContacts {get;set;} //Глобальные контакты для всей компании
    }
    
    class Office
    {
        public Address Address {get; set;}
        public List<Employee> Employees {get; set;}
        public List<Tour> Tours {get;set;}
        public Contacts Contacts {get;set;}
    }
    
    class Address
    {
        public string Country {get;set;}
        public string City {get;set;}
        public string Street {get;set;}
        public string HouseNumber {get; set;}
    }
    
    class Tour
    {
        public string Country {get; set;}
        public string City {get; set;}
        public Hotel Hotel {get; set;}
    }
    
    
    class Hotel
    {
        public string Description {get;set;}
        public Address Address {get; set;}
        public List<Image> Images{get; set;}
    }


    Ну и конечно сделайте конструкторы.

    Инициализация офиса будет такой

    var office = new Office(
                    new Address(country, city, street, houseNumber), 
                    new List<Employee>(),
                    new List<Tour>(),
                    new Contacts { Email = "office@mail"} 
                    );
    Ответ написан
    7 комментариев
  • Правильная разработка программного обеспечения!?

    @Beltoev
    Живу в своё удовольствие
    - Методы?
    - Не, не слышал

    А если точнее:
    Company c = new Company();
    c.SetInfo("Travel", "Touristic company");
    
    Address address = new Address();
    var idCountry = address.AddCountry("Name");
    var idCity = address.AddCity(idCountry, "City");
    address.AddOffice(idCity, "Main office", "Street", "Email", ... );
    
    Contact contact = new Contact("website", address);
    c.AddContact(contact);
    
    Tour tour = new Tour("China", "Hong Hong");
    
    c.AddTour(tour);
    ...


    Набросок грубый, но суть того, как было бы правильнее, думаю, передает доходчиво
    Ответ написан
    7 комментариев
  • Как преобразовать строку в C#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    string data = "FF CA 00 00 00";
    string result = "0x" + String.Join(",0x", data.Split());
    Console.WriteLine(result);

    Посмотреть пример в .NET Fiddle.

    Еще можно регулярные выражения задействовать, но через обычный Split и Join проще всего.
    Ответ написан
    1 комментарий
  • В чём разница dynamic vs Object в C#.NET?

    aush
    @aush
    Разница в том, что для dynamic вы можете написать
    dynamic myDinamic = GetDynamic();
    myDynamic.SomeMethod();


    Object же надо приводить в типу, для которого определен SomeMethod(), или использовать рефлексию. Т.е. проверка переносится с этапа компиляции на момент исполнения.
    Ответ написан
    1 комментарий
  • Как отобразить значение связаного поля в БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT `a`.`id_car`, `m`.`MarkName`, `a`.`CarNumber`, `a`.`Fuel`, `a`.`isActive` 
        FROM `Автомобили` AS `a` 
            LEFT JOIN `Марки` AS `m` ON `a`.`MarkID` = `m`.`id_mark`
    Ответ написан
    1 комментарий
  • Домен второго уровня для домашнего сервера

    @keatis
    Петерхост за 30р\год предлагает парковку.

    Для того, чтобы у тебя был домен (без делегирования), достаточно его просто купить у любого регистратора в зоне .ru. Ну и каждый год\два продлять регистрацию оплатой дензнаками.

    Чтобы к стоящему дома в углу серверу (считаем, что внешний айпи — фиксированный) прикрутить этот домен, надо настроить DNS. За каждый домен должны отвечать два dns-сервера, первичный и вторичный, находящиеся, желательно, в разных сетях. Что-то одно можно настроить на своем же сервере в углу, что-то второе — на сервере друга. Любой из этих серверов может предоставить как услугу и сам регистратор. Например, тот же nic.ru продаст вам домен и предложит услугу Primary DNS с веб-мордой для редактирования зоны (т.е. настройки домена и поддоменов) и Secondary DNS. Каждая из услуг, емнип, стоит по 150р\год.
    Т.о., как один из вариантов — регалим домен, заказываем secondary dns, поднимает дома primary dns и спокойно рулим своим доменом не выходя из консоли домашнего сервера…
    Ответ написан
    Комментировать