Ответы пользователя по тегу C#
  • Как правильно открыть главную форму в событии closing C#?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    if (result != DialogResult.Yes)
    {
    f.Show();
    e.Cancel = true;
    }

    Это в дочерней форме - лишнее.
    Обрабатывайте DialogResult в основной форме, после вызова
    Form2 .ShowDialog();
    Там же извлекайте введённые значения.
    Ответ написан
    Комментировать
  • Как програмно нажать на клавишу?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Вы можете использовать вызов через WinAPI keybd_event

    Ниже - часть моего VB.NET проекта, на C# я думаю сами переделаете.

    Module mdlKbrdEmulate
        ' Эмуляция нажатий клавиш клавиатуры
    
        ' Коды клавиш для эмуляции нажатий
        Public Const VK_LBUTTON = &H1       ' Левая кнопка мыши
        Public Const VK_RBUTTON = &H2       ' Правая кнопка мыши
        Public Const VK_CANCEL = &H3        ' Виртуальная клавиша Отмены, используемая для обработки комбинации клавиш Control-Break
        Public Const VK_MBUTTON = &H4       ' Средняя кнопка мыши
        Public Const VK_BACK = &H8          ' Backspace
        Public Const VK_TAB = &H9           ' Tab
        Public Const VK_CLEAR = &HC         ' 5 (на цифровой клавиатуре без Num Lock)
        Public Const VK_RETURN = &HD        ' Enter
        Public Const VK_SHIFT = &H10        ' Shift (любая)
        Public Const VK_CONTROL = &H11      ' Ctrl (любая)
        Public Const VK_MENU = &H12         ' Alt (любая)
        Public Const VK_PAUSE = &H13        ' Pause
        Public Const VK_CAPITAL = &H14      ' Caps Lock
        Public Const VK_ESCAPE = &H1B       ' Esc
        Public Const VK_SPACE = &H20        ' Spacebar
        Public Const VK_PRIOR = &H21        ' Page Up
        Public Const VK_NEXT = &H22         ' Page Down
        Public Const VK_END = &H23          ' End
        Public Const VK_HOME = &H24         ' Home
        Public Const VK_LEFT = &H25         ' Стрелка влево
        Public Const VK_UP = &H26           ' Стрелка вверх
        Public Const VK_RIGHT = &H27        ' Стрелка вправо
        Public Const VK_DOWN = &H28         ' Стрелка вниз
       '  Удалил остальные, т.к. мой ответ становится слишком большим.
    
        Public Const KEYEVENTF_KEYUP = &H2  ' Событие отпускания клавиши
        Public Const VK_LSHIFT = &HA0
    
        <DllImport("user32.dll")>
        Public Function GetKeyboardLayout(idThread As UInteger) As IntPtr
        End Function
    
        <DllImport("user32.dll")>
        Public Function VkKeyScanEx(ch As Char, dwhkl As IntPtr) As Short
        End Function
    
        <DllImport("user32.dll", CharSet:=CharSet.Auto)>
        Public Function MapVirtualKey(uCode As Integer, uMapType As Integer) As Integer
        End Function
    
        <DllImport("user32.dll", EntryPoint:="keybd_event", CharSet:=CharSet.Auto, ExactSpelling:=True)>
        Public Sub keybd_event(bVk As Keys, bScan As Byte, dwFlags As UInt32, dwExtraInfo As IntPtr)
        End Sub
    
        ' Эмуляция нажатия клавиши или набор текста
        Public Sub SetLetter(sLett As String, fCtrl As Boolean, fShift As Boolean, Optional iInt As Long = 0)
            Dim sScan1 As Byte, sScan2 As Byte, i As Integer, keyboardLayout As IntPtr = GetKeyboardLayout(0)
            Dim vKey As Short, m_LOWBYTE As Byte, sScan As Byte
    
            If fCtrl Then ' Нажатие Ctrl
                sScan1 = CByte(MapVirtualKey(VK_CONTROL, 0))
                keybd_event(&H11, sScan1, 0, 0)
                Call SleepMe(iInt) ' Заморозка выполнения программы
            End If
    
            If fShift Then ' Нажатие Shift
                sScan2 = CByte(MapVirtualKey(VK_LSHIFT, 0))
                keybd_event(&HA1, sScan2, 0, 0)
                Call SleepMe(iInt) ' Заморозка выполнения программы
            End If
    
            For i = 1 To Len(sLett) ' Перебираем все символы строки
                Application.DoEvents()
                If bStop Then GoTo lblEnd      ' Прерывание выполнения
    
                vKey = VkKeyScanEx(Mid(sLett, i, 1), keyboardLayout)
                m_LOWBYTE = vKey And &HFF               ' Get the low byte from the virtual key
                sScan = CByte(MapVirtualKey(vKey, 0))   ' Get the scan code of the key.
    
                keybd_event(m_LOWBYTE, sScan, 0, 0)     ' Нажатие нужной клавиши
                Call SleepMe(iInt) ' Заморозка выполнения программы
                keybd_event(m_LOWBYTE, sScan, KEYEVENTF_KEYUP, 0)
                Call SleepMe(iInt) ' Заморозка выполнения программы
            Next
    
    lblEnd:
            If fShift Then keybd_event(&HA1, sScan2, KEYEVENTF_KEYUP, 0) ' Отжатие Shift
            If fCtrl Then keybd_event(&H11, sScan1, KEYEVENTF_KEYUP, 0) ' Отжатие Ctrl
            Call SleepMe(iInt) ' Заморозка выполнения программы
        End Sub
        ' Эмуляция нажатия спецклавиш
        Public Sub SetLetterEx(vKey As Short, fCtrl As Boolean, fShift As Boolean, Optional iInt As Long = 0)
            Dim sScan1 As Byte, sScan2 As Byte
            Dim keyboardLayout As IntPtr = GetKeyboardLayout(0)
            Dim m_LOWBYTE As Byte = vKey And &HFF               ' Get the low byte from the virtual key
            Dim sScan As Byte = CByte(MapVirtualKey(vKey, 0))   ' Get the scan code of the key.
    
            If fCtrl Then ' Нажатие Ctrl
                sScan1 = CByte(MapVirtualKey(VK_CONTROL, 0))
                keybd_event(&H11, sScan1, 0, 0)
                Call SleepMe(iInt) ' Заморозка выполнения программы
            End If
    
            If fShift Then ' Нажатие Shift
                sScan2 = CByte(MapVirtualKey(VK_LSHIFT, 0))
                keybd_event(&HA1, sScan2, 0, 0)
                Call SleepMe(iInt) ' Заморозка выполнения программы
            End If
    
            keybd_event(m_LOWBYTE, sScan, 0, 0) ' Нажатие нужной клавиши
            Call SleepMe(iInt) ' Заморозка выполнения программы
            keybd_event(m_LOWBYTE, sScan, KEYEVENTF_KEYUP, 0)
            Call SleepMe(iInt) ' Заморозка выполнения программы
    
            If fShift Then keybd_event(&HA1, sScan2, KEYEVENTF_KEYUP, 0) ' Отжатие Shift
            If fCtrl Then keybd_event(&H11, sScan1, KEYEVENTF_KEYUP, 0) ' Отжатие Ctrl
        End Sub
    
    End Module
    Ответ написан
    Комментировать
  • К чему привязать ProgressBar c#?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Как вариант - создать в классе событие, которое будет возникать при достижении целого числа процентов работы (1, 2, 3 и т.д.). А в форме подписаться на это событие и отображать достигнутое значение в прогрессбаре.
    Ответ написан
    2 комментария
  • Почему в C# нет метода detach для потоков как в C++?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Я не большой специалист в С++, прошу поправить меня если ошибусь.
    Насколько я понимаю, detach в С++ нужен для "отвязывания" дочернего потока от основного? Т.е. в случае завершения основного потока, дочерний продолжает работать?
    Для Thread в C# есть свойство IsBackground https://docs.microsoft.com/ru-ru/dotnet/api/system... возможно это и есть нужный Вам аналог?
    Ответ написан
    2 комментария
  • Как передать данные из View в Controller?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Передать нужно список из model или какой-то другой список?
    У Вас под html хелперами скрыто содержимое страницы. Что там внутри - можно только догадываться.
    Ответ написан
  • Почему не требует версию выше (.net framework)?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Если Ваш проект под 4.6.1, а на ПК 4.8, то установка 4.6.1 может не потребоваться, т.к. более новые .NET framework могут поддерживать совместимость с предыдущими версиями.
    Ответ написан
    Комментировать
  • Как лучше всего наладить передачу данных между двумя приложениями на одном и том же компьютере на .NET?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Прочитайте про pipe
    TCP не очень хороший вариант - будут срабатывать антивирусы.
    Ответ написан
    3 комментария
  • Ошибка при десериализации данных?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Используйте этот сервис: https://www.jsonutils.com/ для генерации класса из json
    Ответ написан
    Комментировать
  • Как построить 3D график по точкам?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Курите стандартный контрол Chart. Управление им очень похоже на графики Excel.
    Ответ написан
  • Как парсить данные с сайта C#?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Если html передаётся "как есть" (без генерации на js), то можно сделать простой http(s) request и распарсить DOM.
    Ответ написан
    Комментировать
  • Не показывается код элемента в форме в winform c#?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Кроме создания элемента, ему нужно присвоить какие-то свойства, а потом добавить на форму (или панель).
    Добавьте кнопку на форму и поиском в коде просмотрите все этапы. Потом сверьте с проблемной кнопкой - чего не хватает.
    Ответ написан
    1 комментарий
  • Как использовать переменные или классы в другом файле?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Это называется dll
    Ответ написан
    Комментировать
  • Как можно серверу передать таблицу?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Отправка целой таблицы, особенно если она большая - признак неверной архитектуры приложения.
    Данные должны отправляться по мере возникновения потребности в них.
    Алгоритм взаимодействия может быть такой:
    1. Приложение отправляет (GET или POST) запрос на сервер;
    2. Сервер обрабатывает входящий запрос, запрашивает у БД информацию, конвертирует её например в json, отправляет обратно;
    3. Приложение получает json, преобразует его в класс и выполняет необходимые дальнейшие действия (отображает или обрабатывает полученные данные).
    Ответ написан
    Комментировать
  • Что мне нужно вписать в код авторизации на основе ролей в ASP.NET Core?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    if (!User.IsInRole("User")) { return; }

    но по факту, у Вас здесь:
    [Authorize(Roles = "User")]

    уже идёт отсечка по роли.
    Ответ написан
    Комментировать
  • Как обновлять программу на с# в своей же папке без админ. прав?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Если Вы пользуетесь для накатывания обновлений инсталлятором, там можно поставить галочку "удалять предыдущую версию". То-есть по сути в этом случае идёт переинсталляция программы.
    А технологию ClickOnce для установки и обновлений Вы рассматривали?
    Ответ написан
  • Как переопределить WndProc в динамически созданной форме?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Возможно есть смысл вынести логику в сторонний модуль.
    Ответ написан
    Комментировать
  • Почему ошибка появилась и как ее исправить?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Судя по всему, в Вашей БД поле "users.Login" не может быть Null.
    Т.к. Вы вставляете новую запись в эту таблицу, то Вам нужно явно указать, чему равно это поле при INSERT.
    Либо в настройках БД - выставить дефолтное значение для этого поля.

    Возможен ещё вариант возникновения проблемы - если поле users.Login имеет связь с другой таблицей.
    Ответ написан
    1 комментарий
  • Как извлечь Bitmap свернутого процесса в Windows?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Сделайте окно видимым, заскриншотьте и скройте. За доли секунды пользователь ничего не заметит.
    Ответ написан
    Комментировать
  • Как проверить строку на совпадение двух символов?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Делаете цикл по количеству букв в фразе.
    Берете каждые две буквы по порядку.
    Регулярным выражением ищете количество встречающихся повторов.

    В общих чертах так.
    Ответ написан
    Комментировать
  • Процесс не может получить доступ к файлу .png. Как решить проблему?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    У Вас процесс не закрывает корректно обрабатываемый файл. Из-за этого и не удаляется директория.
    Ответ написан