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

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Есть вариант BlazorBootstrap.
    https://demos.blazorbootstrap.com/charts/line-chart

    Установка требует чуть чуть понимания.
    вот пример поставить на WASM
    https://docs.blazorbootstrap.com/getting-started/b...
    Ответ написан
    Комментировать
  • Как динамически изменить содержимое Grid в WPF?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    У Grid должно быть свойство Visibility. Его можно менять на Visibility="Hidden" и иные значения (см мануал WPF).
    Ты можешь сделать 2 Grid и менять из свойства по клику, кнопке и тд.
    Ответ написан
    4 комментария
  • Как сериализовать/десерилизовать такой объект?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Просто обрабатывай Exception и все. Скорее всего там прилетает ошибка какая-то типа - SerializeIsNull (это из головы просто пример) или еще что-то. Ее и обрабатывай.
    https://metanit.com/sharp/tutorial/2.14.php
    Ответ написан
    Комментировать
  • Что мне нужно изучить и как создать приложение по типу удалённого управления?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет.
    Тебе нужен Xamarin (для мобилки) и WPF (only Windows System) или WorkerService (для ПК).
    Либо можно воспользоваться MAUI как мутиплатформой.
    Вкратце ты можешь отправить JSON на указанный Ip и порт, а его со стороны пк будет слушать твое приложение. Далее если получена команда, он начинает логику закрытия.
    Ответ написан
  • DataGrid отображает только последнюю строчку. Как исправить?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Я даже честно удивлен, что это у тебя работает вообще хоть как-то.
    Не работает у тебя потому, что ты сам пишешь в разметке "выдай мне 0 элемент списка".
    Обращаю внимание на Binding User[0].username. Причина в этом.

    <DataGridTextColumn Width="*" Header="Имя пользователя" Binding="{Binding User[0].username}"></DataGridTextColumn>
    
     <DataGridTextColumn Width="*" Header="ФИО" Binding="{Binding User[0].FullName}"></DataGridTextColumn>


    Чтобы все работало отлично в XAML тебе нужно передавить список объектов с нужными полями в строчку

    <DataGrid x:Name="Dg_Login" Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Bunding CollectionDbObject}"> 
    <DataGrid.Columns>
    <DataGridTextColumn Width="*" Header="Имя пользователя" Binding="{Binding username}"></DataGridTextColumn>
    <DataGridTextColumn Width="*" Header="ФИО" Binding="{Binding FullName}"></DataGridTextColumn>
    <DataGridTextColumn Width="*" Header="Результат входа" Binding="{Binding State1}"></DataGridTextColumn>
     <DataGridTextColumn Width="*" Header="Дата" Binding="{Binding Date, StringFormat=dd.MM.yyyy HH:mm:ss}"></DataGridTextColumn>
    </DataGrid.Columns>


    Должно выглядеть примерно так
    Ответ написан
  • Как сделать, чтобы у букв в Xamarin Form была черная обводка?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Вероятно Вам поможет вот это.
    Ответ написан
    Комментировать
  • Как проверить IP-адрес на то, что он существует?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Как вижу, вы пытаетесь сразу подключиться по TCP к указанному ip адресу.
    Вариант1: Рекомендую проверить доступность данного хоста вообще ICMP запросом.
    В ICMP ответе Вам прилетит статус ответа Timeout или Success (или что-то иное плохое), по нему и решайте доступен ли хост (хотя это не 100% гарантия. На устройстве может быть отключен ответ на ICMP запросы).
    Рекомендую высылать более 1 ICMP пакета для проверки, т.к 1 может быть Timeout из-за того что устройство только проснулось например.

    Можно воспользоваться стандартной библиотекой System.Net.NetworkInformation и классом в нем Ping
    Вариант второй у меня есть библиотека в nuget NetObserver которая делает такие запросы в классе IcmpRequestSender без предварительного чтения мануала.

    629a3f09b8c81851947824.png

    Вариант 2: Делаете подключение TcpClient отдельным потоком. Вешаете туда флаг в код, после строчки коннекта. Если флаг не поднят например более 10 секунд, то гасите поток. Значит хост не доступен.
    Для этого Вам вероятно нужно будет делает наблюдатель за открывающимися потоками, либо найти фрейморк который так работает.
    Ответ написан
  • Как создать диапазон чисел для массива?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Если я верно понял задумку, то вам нужно проверять перед добавлением в массив число которое вы получаете.
    Получится костыль в виде

    int [] mass = new int[5];
    int a = 15;
    int b = 66;
    
    public void AddInt(int number)
    {
    if (number > 0 & number <= 20)
    {
        mass[0] = number;
    }
    else if (number > 20)
    {
        mass[1] = number;
    }
    
    }
    
    AddInt(a);
    AddInt(b);


    На самом деле это ужасное "индуское" решение.
    Лучше наполни массив и отсортируй его по возрастанию потом пузырьковым алгоритмом например.
    Вот пару вариантов.
    Ответ написан
  • Почему в примере цикл вечен. Вернее один из параметров 0 всегда?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Что-то я не вижу в самом цикле do-while чего-то, что бы изменило значение переменной minValue. Оно залетает с 0 и не используется в цикле вообще.
    Так как оно должно изменить значение?

    Так же, уточните что за "видео", где Вы смотрели данный код.
    Ответ написан
  • Пытаюсь подключить БД access к visual studio 2022, но вылазет ошибка, как исправить?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!

    Возможно проблема кроется в битности MS Access.
    Откройте в MS Access: Файл -> Учетная запись -> О программе Access -> появится информация о программе, где указана ее битность.
    Если, указано 32, то Вам нужно снести офис и поставить x64.

    625f190608feb399889574.png

    Второй Вариант - настройки компилятора для построения x86 решения.
    Нашел вот тут подсказку.
    А вот мануал по настройки VS Studio 2022 под запуск на нужной платформе.
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Тут все очевидно и просто. Вам даже студия ответ пишет.
    Для использования каких то методов, свойств и т.д в нужном классе, нужно его инициализировать.
    Обычно это делается через new MyClass().
    В вашем случае видимо Вы хотите затянуть данные из какой то формы в wpf. Вам стоит воспользоваться такой штукой как DI.
    Или воспользоваться более костыльним методом, закинув данные из Text в атрибуты метода при вызове.
    Ответ написан
    Комментировать
  • При компиляции выдёт ошибку "Ссылка на объект не указывает на экземпляр объекта".Что делать?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Это означает, что используем объект (допустим info.Name[index]) не был создан\инициализирован или прокинут ссылкой из вне в эту область видимости кода.

    Проще: Вы не создали или не получаете используемый объект. Где? Понятия не имею. Вы не показали сам код ошибки.
    Ответ написан
    2 комментария
  • Можно ли передать ссылку на переменную в маcсив?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Вообще, не совсем понятна Ваша задумка данного костыля.
    Возможно, Вы хотите где-то дальше массив перебирать и дергать эти поля. Вопрос: зачем?
    Еще тем более поля у Вас приватные.

    Я предлагаю Вам банально пересмотреть способ использования объекта с указанными полями.
    Вы будете использовать класс и дергать его публичные поля.

    Другого способа взаимодействия с объектом для его изменения нет (по крайней мере я пока о такой магии не слышал. Пусть меня поправят, если она есть).
    Напоминаю, что свойства и методы объекта без "инстанса" (инициализации класса\объекта в памяти) работать не будут.
    Ответ написан
  • Как добавить метод в public class из другого скрипта?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Очень не разборчиво написано, что откуда и почему.
    Если я верно понял нужно использовать метод VehicleMaxFuel().

    Вариант 1: Создай экземпляр класса где содержится метод и все.
    Game testclass = new Game();
    testclas.VehicleMaxFuel()


    Вариант 2: если ты хочешь такой же класс но другую реализацию, то можно использовать наследование от класса в моде. В таком случае можно использовать методы родительского класса (который с методом VehicleMaxFuel())

    public class MyClass : ModClass
    {
    public void VehicleMaxFuel(float value) {....}
    }
    Ответ написан
  • Как сконфигурировать Worker Service для логгирования запросов Entity Framework через NLog?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Вот мой вариант подключения Nlog к такому сервису на .NET 6
    Сам процесс подключения и использования его через DI дальше брал вот с этого примера

    Возможно я пропустил пару "скобочек", но вот так выглядитProgram.cs:
    IHost host = Host.CreateDefaultBuilder(args)
        .ConfigureHostConfiguration(builder =>
        {
            builder.SetBasePath(System.IO.Directory.GetCurrentDirectory());
        
        })
    
        .ConfigureServices(services =>
        {
            services.AddHostedService<Worker>();
          var config = new ConfigurationBuilder()
                  .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                  .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddEnvironmentVariables()
                  .Build();
         
            services.AddSingleton<IRunner, Runner>()
            .AddLogging(loggingBuilder =>
            {
                // configure Logging with NLog
                loggingBuilder.ClearProviders();
                loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Debug);
                loggingBuilder.AddNLog(config);
            });
            services.AddSingleton<IEmailService, EmailService>();
            services.AddSingleton<IClientSmtp, SmtpClientGoogleAsync>();
            services.AddSingleton<ICheckingSubEmailService, CheckingSubEmailService>();
        })
        .UseWindowsService()
        .Build();


    После в такого инстанса в документации есть часть где создается class Running, там ты просто закинь POST запрос в свою базу. Все это делается на DI не сильно сложно.
    Ответ написан
    Комментировать
  • Как можно выявить в чём проблема, при запуске asp.net core 6 приложения?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Если глянуть на ошибку:
    " No service for type 'System.String' has been registered." - то предположительно Вы забыли зарегистрировать какой-то класс.
    Вспомни что добавлял последнее или запусти с дебагом и пошагово посмотри где отвалилось.
    Ответ написан
  • Как решить проблема запуска ново добавленного службы Windows?

    hekkaaa
    @hekkaaa Автор вопроса
    C#/.NET Developer
    Решение нашел спустя 4 дня поиска.
    В документации Microsoft - это как то не упоминается или не акцентируется, но нужно доустановить Nuget пакет Microsoft.Extensions.Hosting.WindowsServices и добавить в Program.cs -> .UseWindowsService()

    В стартовой зборке это будет выглядеть вот так:
    IHost host = Host.CreateDefaultBuilder(args)
        .ConfigureServices(services =>
        {
            services.AddHostedService<Worker>();
        })
       <b> .UseWindowsService()</b>
        .Build();


    P.S информацию случайно нашел вот тут.
    Ответ написан
    2 комментария
  • Сshtml выводит код на страницу как исправить?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Судя по всему он не понимает указанное вами частичное представление.
    т.к не знаю что у Вас накручено на беке в хосте, то рекомендую воспроизвести вот этот простой пример показанный на metanit.
    Ответ написан
    Комментировать
  • Как вернуть результат при пустом значении?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Обычно в таких случаях бросаются ошибкой и обрабатывают ее выше по коду, либо на месте, если значение null.

    if(bookPriceDb == null)
    {
     throw new NullReferenceException ("не существует указанного id: {bookingId} ")
    }
    Ответ написан
    Комментировать
  • Как в свойство добавить новые значения?

    hekkaaa
    @hekkaaa
    C#/.NET Developer
    Привет!
    Для указанного тобой свойства это:

    Magazine item = new Magazine();
    item.Product  = "Hook";


    Так же обрати внимание что при создании свойств есть возможность сделать init (или ты можешь столкнуться с этим).

    Тогда это работать будет только в момент инициализации класса:

    class Magazine
    {
        public string Product { get; init; }
    }
    Magazine item = new Magazine(){ Product = "Soda" };
    Ответ написан
    Комментировать