Ответы пользователя по тегу C#
  • Как реализовать каркас в WPF?

    Может вам пригодиться: InfrastructureLight
    Ответ написан
    Комментировать
  • Причина появления System.ArithmeticException?

    artemmatveev
    @artemmatveev Автор вопроса
    Определённые функции некоторых версий Delphi, c++ любят менять бит в FPU-регистре CW на такое значение, что бедный математический сопроцессор перестаёт переваривать double.NaN, начиная плеваться на него исключениями. А в WPF, как известно, у доброй половины свойств FrameworkElement-а значение по умолчанию выставлено именно в NaN. При малейших манипуляциях над этими свойствами приложение начинает падать.


    Регистр управления CW предназначен для управления режимами работы сопроцессора. Он содержит ряд полей, значения которых влияют на точность результата, поведение процессора при встрече некорректных операндов и результатов


    Решение проблемы стало, как и предложил Sumor, но только на стороне .NET-а:

    public partial class MainWindow : Window
        {
            const int _RC_NEAR = 0x00000000;
            const int _PC_53 = 0x00010000;
            const int _EM_INVALID = 0x00000010;
            const int _EM_UNDERFLOW = 0x00000002;
            const int _EM_ZERODIVIDE = 0x00000008;
            const int _EM_OVERFLOW = 0x00000004;
            const int _EM_INEXACT = 0x00000001;
            const int _EM_DENORMAL = 0x00080000;
            const int _CW_DEFAULT = _RC_NEAR + _PC_53 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT + _EM_DENORMAL;
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {            
                int hwnd = ShowForm(5);
                _controlfp(_CW_DEFAULT, 0xfffff);
            }
    
            [DllImport(@"pcv.dll", SetLastError = true, EntryPoint = "_ShowForm", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
            public extern static int ShowForm(int hwnd);
    
            [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
            public static extern int _controlfp(int newControl, int mask);
    
        }
    Ответ написан
    Комментировать
  • Видео курсы или книги??

    Комбинируйте.
    Например для C#:
    1) Начните с книги: Эндрю Троелсен Язык Программирования C# 5.0 и платформа .NET 4.5 (6-е издание, 2013)
    2) Паттерны проектирования
    Ответ написан
    Комментировать
  • Как импортировать(экспортировать) из Excel в C#?

    Предлагаю посмотреть в следующем направлении. Предположим нам нужно записать данные в Excel файл. Причем, файл должен содержать фильтры по столбцам и оформлен заранее пользователем (заказчиком). Для решения вам необходимо изменить расширение файла имя_файла.xlsx на имя_файла.zip. Распаковать архив.

    В директории, в которую был распакован архив, нас интересует:
    • sharedString.xml - хранит все строковые значения
    • sheet1.xml - хранит остальные данные

    Дополнить файлы, вашими данными (Linq To Xml). Упаковать все в архив, например, используя SharpZipLib.

    Такой подход позволит вам формировать отчеты, не требуя установки MS Excel на компьютере пользователя (многие используют Open Office). Такой подход подходит для серверных решений.
    Ответ написан