• Как преобразовать в linq?

    @basrach
    public int[,] GetIntValue(ValueClass[,] values)
    {
    	return values.Cast<ValueClass>()
    		.Select((x, i) => new { x?.Value, i })
    		.Aggregate(
    			new int[values.GetLength(0), values.GetLength(1)],
    			(accum, item) =>
    			{
    				accum[item.i / values.GetLength(1), item.i % values.GetLength(1)] = item.Value.GetValueOrDefault();
    				return accum;
    			});
    }
    Ответ написан
    Комментировать
  • Как отключить изменение данных DateTime при выборке их из JObject.Parse?

    @Dealaxer Автор вопроса
    В общем JObject.Parse нет функций и методов, чтобы отключить принудительное трансформирование даты при парсинге, в отличие от JsonConvert.DeserializeObject и метода DateParseHandling.None.
    Но к JObject.Parse можно применить хак, до проброса json файла в JObject.Parse, добавить любой штрих к датам(например: тире в начале даты) и чтобы JObject.Parse не смог трансформировать даты. И затем при выборке токена с датой убрать не читаемый штрих и работать с датой нормально.

    Всем спасибо за помощь!
    Ответ написан
    Комментировать
  • Как переключаться между окнами в WPF с паттерном MVVM?

    SpacePurr
    @SpacePurr
    c#, wpf
    Попробуйте посмотреть здесь Ссылка

    p.s.
    Я сейчас сам изучаю шарп, пишу небольшую программу для работы с Компас 3Д и тоже столкнулся с реализацией открытия новых окон на MVVM, однако ради одного окна я не стал надолго уходить в изучение сервисов навигации и просто создал объект нужного окна в MainViewModel и вызвал у него ShowDialog(), а NewViewModel нового окна привязана к View через DataContext как обычно это делается.
    NewWindow window = new NewWindow();
    window.ShowDialog();

    Для обмена информацией между разными VIewModel использую классы со статическими конструкциями.

    Удачи в изучении.
    Ответ написан
    Комментировать
  • Как загрузить UserControl при клике на элемент ListBox?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Вам нужно просто связать датаконтекст групбоксов с выделенным элементом списка. Всё остальное сделает WPF.
    <ListBox ItemsSource="{Binding DevList}" SelectedItem="{Binding SelectedElement}" />
    <GroupBox DataContext="{Binding SelectedElement}">
    </GroupBox>
    <GroupBox DataContext="{Binding SelectedElement.Subelement1}">
    </GroupBox>


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

    В таком случае хорошо сделать во вьюмодели реализацию INotifyPropertyChanged.
    Ответ написан
  • Как сделать чтобы не считало системные папки?

    @itgood Автор вопроса
    Если кому то интересно вот решение
    public  IEnumerable<string> SafeEnumerateFiles(string path, string searchPattern, SearchOption searchOption)
    		{
    
    			Stack<string> dirs = new Stack<string>();
    			dirs.Push(path);
    
    			while (dirs.Count > 0)
    			{
    				string currentDirPath = dirs.Pop();
    				if (searchOption == SearchOption.AllDirectories)
    				{
    					try
    					{
    						string[] subDirs = Directory.GetDirectories(currentDirPath);
    						foreach (string subDirPath in subDirs)
    						{
    
    							if ((File.GetAttributes(subDirPath) & (FileAttributes.Hidden | FileAttributes.System)) != (FileAttributes.Hidden | FileAttributes.System))
    							{
    								dirs.Push(subDirPath);
    							}
    						}
    					}
    					catch (UnauthorizedAccessException)
    					{
    						continue;
    					}
    					catch (DirectoryNotFoundException)
    					{
    						continue;
    					}
    				}
    
    				string[] files = null;
    				try
    				{
    					files = Directory.GetFiles(currentDirPath, searchPattern);
    				}
    				catch (UnauthorizedAccessException)
    				{
    					continue;
    				}
    				catch (DirectoryNotFoundException)
    				{
    					continue;
    				}
    
    				foreach (string filePath in files)
    				{
    					yield return filePath;
    				}
    			}
    		}
    Ответ написан
    Комментировать
  • Что написать для пополнения портфолио?

    Tiendil
    @Tiendil
    Разработчик ПО.
    Для портфолио подойдёт любой внедрённый проект: сайт с посещениями, бот с пользователями, игра с игроками, etc.

    Сейчас, большая часть сложности разработки ПО находится не в написании самого кода, а в сопутствующих активностях (исследование, организция окружения разработки, тестирование, внедрение, поддержка, etc).

    Поэтому, проект с пользователями (лично в моих глазах) даст фору более сложному проекту разработанному "в стол". Поэтому самая главная рекомендация - решить конкретную задачу, а не фантазировать. Если будет статья на каком-нибудь хабре с лайками и комментариями - совсем замечательно.

    Расчётные проекты могут пойти как в плюс так и в ноль, в зависимости от того, насколько собеседующий в курсе темы, по которой они делались.

    Рекомендовать более точные темы сложно, поскольку не указано чем конкретно хотите заниматься (в какой области хотябы: веб, машинное обучение, офлайн по, etc).

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

    То есть, получается, что в резюме (поначалу) лучше вкладывать ссылки на гитхаб и профиль хабре, чем на личный сайт.
    Ответ написан
    3 комментария
  • Для кого все же предназначен код, полученный из CIL (байт-кода .net)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Исполняемый файл - это не прямой набор инструкций. Он может иметь специальную структуру - .com, exe, линуксовые и юниксовые бинарники отличаются - CIL компилируется в машинный код, но в результате создается не просто байткод команд, а бинарник определенного формата, с которым умеет работать операционка - машинный код должен каким-то образом загрузиться в память, возможно даже не весь а частями, точка входа должна быть сообщена процессору и так далее.
    Сейчас практически несуществует линейных программ, которые написаны таким образом, что выполняются в моносреде - все пишется из расчета многозадачных ОС.

    Таким образом, в CLI обычный машинный код, который выполняется процессором, но который содержит определенные закладки, вызовы функций операционных систем для того, чтобы этот код успешно работал в определенной ОС, чтобы он не загребал под себя 100% CPU на пустые циклы и так далее.
    Это не значит, что там немашиный код, это значит что машинный код написан для работы в определенных условиях и содержит определенные вызовы.
    Ответ написан
  • Для кого все же предназначен код, полученный из CIL (байт-кода .net)?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    хорошо сформулированный вопрос, содержит не менее половины ответа (с)
    тут так..
    CIL действительно компилируется в машинный код
    да, действительно
    зачем указывать список целевых операционных систем?
    не поверите, но минимальный ответ примерно таков - правильный формат исполняемого файла
    ps да да, как подмечено Saboteur, и правильные обращения к ОС, тоже.. или даже на первом месте.. .. эмм.. для CIL.. того же Mono, да проверьте сами! ))
    Ответ написан
    Комментировать
  • Как разбить строку по 2 символам \\(путь к файлу)?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    \\(путь к файлу)
    это синтаксис литералов в тексте программы, что бы компилятор различал применение \ как служебного символа и как просто символа. реально строки путей содержат один символ разделитель \

    так что разбивать надо именно по нему. хотя и записывается как '\\'. но это один символ

    еще посмотрите класс Path https://docs.microsoft.com/ru-ru/dotnet/api/system...
    иногда его достаточно для выделения пути без имени, имени файла, имени без расширения, или расширения без имени
    Ответ написан
    Комментировать
  • Как упорядочить вывод в консоли?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    public static void Show(string dirPath, int level)
    {
    ...
           var sb = new StringBuilder();
           sb.Append('\t', level);
           sb.Append(dirFiles[i]);
           Console.WriteLine(sb);
    ...
           Show(dirs[i], level + 1);
    ...
    }
    ...
    static void Main(string[] args)
    {
           Show("D:\\test", 0);
    ...
    }


    ps естественно, возможны и другие извращения..
    spoiler
    public static int level;
    ...
    public static void Show(string dirPath)
    {
    ...
           var sb = new StringBuilder();
           sb.Append('\t', level);
           sb.Append(dirFiles[i]);
           Console.WriteLine(sb);
    ...
           level++;
           Show(dirs[i]);
           level--;
           // очевидно что первый вариант будет попроще и понадежнее
    ...
    }
    ...
    static void Main(string[] args)
    {
           level = 0;
           Show("D:\\test");
    ...
    }
    Ответ написан
    5 комментариев
  • Пет проект Джуна на React?

    hzzzzl
    @hzzzzl
    хобби есть или чето такое?
    у меня первое было трекер для бега, с базой данных и прочим
    нравится готовить? делай сайт поиска рецептов
    играть игры? пробуй микро-аналог стима
    нравится только реакт? сделай блог про реакт

    ну а тудулисты тоже разные могут быть, вот попробуй сделать такой, только еще для многих пользователей и чтобы у каждого был свой уровень доступа, точно "не стыдно показать" как бы
    https://react-beautiful-dnd.netlify.com/iframe.htm...
    Ответ написан
    Комментировать
  • Изменение стиля ComboBox WinForm C#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Если нужна глубокая кастомизация элементов управления — используйте WPF. Он и быстрее и гибче (требования к ОЗУ вырастут не сильно, по сравнению с формами).
    Ответ написан
    4 комментария
  • Как совместить дерево и таблицу?

    mshak
    @mshak
    Если вам нужен именно такой контрол, как на скриншоте, то это стандарный PropeertyGrid. С ним не сложно работать.
    Если свой собственный, то необходимо делать собственную отрисовку TreeView, т.е. переопределяем OnDrawNode и т.д.
    Ответ написан
    Комментировать
  • Как заставить заработать триггеры в ListViewItem?

    cyber_roach
    @cyber_roach
    UX дизайнер INEDIapps
    Потому что в DataTemplate вы создали еще один ListViewItem (вместо контента первого)
    В общем дереве объектов у вас получился ListViewItem вложенный в ListViewItem неудивительно что все сломалось.
    (DataTemplate создается для ContentPresenter в стиле)

    https://docs.microsoft.com/ru-ru/dotnet/api/system...
    Ответ написан
    1 комментарий
  • Как заставить заработать триггеры в ListViewItem?

    @AquariusStar Автор вопроса
    Решил проблему. Оказалось, в попытках решить вопрос с шаблонами данных отключил словарь ресурса временно в App.xaml, который и ссылался на этот стиль. А затем и забыл про него. Поэтому и не работало всё. Теперь полностью заработало как надо.
    Ответ написан
    Комментировать
  • Как правильно читать строки из большого файла?

    @Sumor
    Если планируется одновременная работа с данными, да ещё и их изменение, то лучше рассмотреть вопрос с БД.
    Есть много вариантов простых встроенных в программу движков, которые обеспечат вам корректную одновременную работу с данными.

    Если же хочется поиграться самому, то вот несколько моментов.
    Для одновременной работы из нескольких потоков файл нужно открывать с опциями FileShare.Read или FileShare.ReadWrite. Особенности работы с ними прочитаете сами.
    Удаление данных в начале файла приводит к его полному переписыванию операционной системой. То есть компьютер всё равно прочтёт 600 МБ, просто это будет не в вашем потоке.
    Достаточно быстро просто помечать "удалённые строки" какими-то спецсимволами. Например, вы можете выделить под это первый символ строки. А очистку начала файла производить раз в 100-200-300-500 "удалений".
    При этом, если вы планируете многопоточность, то нужно хорошо организовать их взаимодействие, а то получите дважды обработанные строки.
    Ответ написан
    Комментировать
  • Как отловить нажатие TAB в C# WinForms?

    arxont
    @arxont
    C# программист
    1 Вариант
    textBox2.Multiline = true;
    textBox2.AcceptsTab = true;

    2 Вариант, отслеживаем PreviewKeyDown
    private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
       if (e.KeyCode == Keys.Tab)
       {
          textBox1.AppendText("\t");
          e.IsInputKey = true;
       }
    }
    Ответ написан
    Комментировать
  • На Тостере слово "гомосексуалист" подвержено цензуре и за него банят?

    TosterModerator
    @TosterModerator Куратор тега Тостер
    Модератор Хабр Q&A
    1. Пункт 5.1. правил Сервиса гласит:
    Любые оскорбительные формулировки запрещены. Даже в том случае, если наличествуют неопровержимые доказательства того, что в указанных оскорблениях имеется доля правды.
    В этом пункте отсутствуют какие либо ограничения по составу субъектов. Т.е. оскорбительные формулировки запрещены в принципе, а не только в отношении пользователей Сервиса.

    3. Ваше высказывание было сформулировало таким образом, что под него подпадали все участники процесса разработки, а не отдельно взятая личность:
    5beaa2d529f9e352851147.png

    Это далеко не первое употребление оскорбительных формулировок с вашей стороны. Пожалуйста, будьте более сдержанны и корректны, в противном случае ваш доступ к Сервису будет ограничен перманентно.
    Ответ написан
    6 комментариев
  • Как объяснить клиенту, что копипаст - это плохо?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    что копипаст — это плохо

    кому плохо?
    Вы высказали свои мнения? Отлично. Теперь делаем то за что Вам платят. Будет свой проект со своим финансированием - будете делать как Вам хочется.
    Ответ написан
    6 комментариев