Ответы пользователя по тегу Visual Studio
  • Почему консоль c# на Visual Studio не распознаёт кириллицу (русские буквы)?

    @Sumor
    Console.OutputEncoding
    Попробуйте поменять на utf-8.
    Как вариант где-то нужно установить шрифт для консоли на любой truetype
    Ответ написан
    1 комментарий
  • Как задать координаты прямоугольника без StackPanel?

    @Sumor
    Рисуй на Canvas - есть и координаты и размеры.
    Ответ написан
    Комментировать
  • Как убрать ошибку при работе с Excel с помощью C#?

    @Sumor
    Добавьте в ссылки проекта ссылку на Microsoft Visual Basic for Applications Extensibility 5.3 library
    А также нужна не ссылка на Excel.exe, а там же в ссылках (references) проекта добавить ссылку на Microsoft.Office.Interop.Excel
    Ответ написан
  • Как решить проблему с dll?

    @Sumor
    Битность библиотеки должна совпадать.

    Подключение через DllImport. При этом используемые структуры нужно будет переописать в C#, чтобы ими можно было пользоваться.
    С++ типы в описании функции или структуры описываются с атрибутами маршалинга - для автоматического перевода в типы C#. В частности, ты используешь char - это 8-битный символ, в C# используется Unicode - 2 символа. Для автоматического перевода в Unicode нужно указывать параметр Charset.
    using System.Runtime.InteropServices;
    
    [DllImport("myDll.dll", CallingConvention=CallingConvention.StdCall)]
    public static extern int Card();
    
    [DllImport("myDll.dll", CallingConvention=CallingConvention.StdCall, Charset=Charset.Ansi)]
    public static extern int cudaCard(IntPtr mWnd, IntPtr aWnd, string data, string parms, bool show, bool nopause);
    Ответ написан
    Комментировать
  • Почему не работает русский язык в консоли .NET Core?

    @Sumor
    По умолчанию, в консоли Windows кодировка 866.
    Переключите кодировку перед выводом.
    Console.OutputEncoding = System.Text.Encoding.UTF8;

    Либо переключите консоль в режим UTF-8 в батнике:
    chcp 65001
    Ответ написан
    1 комментарий
  • Как открыть файл при перетаскивание в окно?

    @Sumor
    Простой способ: Для формы разрешите AllowDrop и ловите событие DragDrop. В её параметрах будет описание того, что на вас кидают.

    Сложный способ: для затравки прочитайте вот это https://habrahabr.ru/post/179131/.
    Там описана реализация на Delphi, но последовательность действий такая же.
    Нужно описать все функции, которые используются через DllImport. Вызвать DragAcceptFiles.
    Переопределить Wndproc для формы protected override void WndProc(ref Message m), и там обрабатывать событие WM_DROPFILES и через DragQueryFile получить переданный список.
    Ответ написан
    Комментировать
  • Как правильно создать свой контрол?

    @Sumor
    По идее всё правильно делаете.
    1. Описываете контрол, всё равно это UserControl или наследник UIControl.
    public partial class radioTest2:RadioButton
        {
            public string note;
            public radioTest2()
            {
    
            }
        }

    2. В окне, в которое добавляете, описываете xmlns.
    xmlns:MyNamespace="clr-namespace:projectWPF2.rcontrols;"

    3. В нужном месте добавляете контрол.
    <MyNamespace:radioTest2 />

    Небольшой момент. Если проект в котором находится контрол не скомпилирован или в нём есть ошибка, то место где используется контрол также показывается с ошибкой. Особенно неприятно, что в этом случае может некорректно отображаться окно в визуальном редакторе. Просто исправьте другие ошибки и пересоберите решение.
    В связи с этим для упрощения жизни лучше контролы выносить в отдельный проект.
    Ответ написан
    Комментировать
  • Как достать картинку из ресурсов?

    @Sumor
    Попробуйте указать полный путь к ресурсам в виде Uri типа pack.
    Иногда, когда картинки располагаются не в сборке, которая запускается, приложение не может отыскать их в ресурсах.
    Полный путь будет выглядеть примерно так:
    pack://application:,,,/ConfigWPF;component/saveButton.Image.png

    component - часть пути, указывает на ресурсы.
    Ответ написан
  • Как сконвертировать дату в C# без времени в unixtime?

    @Sumor
    Как-то так?
    var epoch = (timePicker.Value.Date.AddHours(21) - new DateTime(1970, 1, 1, 21, 0, 0)).TotalSeconds;

    И потом мне кажется что время от 21 часа до 21 часа примерно равно времени от 0 до 0:
    var epoch = (timePicker.Value.Date - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds;
    Ответ написан
  • Как передать переменную на другую страницу WPF?

    @Sumor
    Помимо перечисленного можно использовать NavigationService в приложении. И производить переключения страниц через него - методом Navigate. Автоматически вы получаете возможность хранения истории переходов с учётом всех параметров.
    Ответ написан
    2 комментария
  • WPF. Какие элементы использовать в мессенджер-приложении?

    @Sumor
    Grid подразумевает размещение элементов в определённой сетке или равномерно по экрану. Он, по умолчанию, не предполагает прокрутки. Поэтому его нужно использовать для размещения известного количества известных элементов.
    StackPanel располагает элементы подряд. При превышении размера используется прокрутка. Элементы могут быть разного типа. В StackPanel каждым добавленным элемент нужно управлять индивидуально.
    ItemsControl по сути похож на StackPanel, но тут мы имеем централизованное управление элементами - через Items или ItemsSource.
    ListBox добавляет к ItemsControl возможность выделять элементы.

    Это весьма общая классификация: с помощью свойств, обработчиков, шаблонов можно при большом желании превратить одно в другое.

    В вашем случае, в зависимости от логики приложения можно предложить следующее.
    Если диалоги у вас в программе представлены списком (лучше BindingList или ObservableCollection), то их располагать в ItemsControl со StackPanel в качестве ItemsPanel. В шаблон элемента вы добавляете название, фотографию диалога и ListBox с сообщениями.
    Если не хотите заморачиваться с ItemsControl, то тогда использовать StackPanel, но тогда при добавлении диалога вам вручную придётся добавлять элементы для названия, фото и собщений.

    Можно ещё рассмотреть вариант с использованием TreeView, где в качестве первого уровня будут диалоги, а второго уровня - сообщения. Автоматом получаете закрытие/открытие диалогов.
    Ответ написан
    Комментировать
  • Что нужно для работы с MS SQL Server Express в VS?

    @Sumor
    SQL Server Browser вам не нужен.
    SQL Server Configuration Manager показывает, что у вас всё правильно настроено.
    Имя сервера, в вашем случае, это либо точка, либо можно указать название машины - я так понимаю это ADMIN.

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

    Можно воспользоваться SQL Management Studio. В нём, возможно, более понятно без подсказок как работать с БД.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы линии не перекрывали фигуры (Windows Forms)?

    @Sumor
    Собственно два варианта.
    1. Рисовать вершины в конце и заполнять их фоном через FillEllipse
    2. Так как размер вершины графа известен, то рисовать линии до границы вершины.
    Ответ написан
    3 комментария
  • Почему появляется System.AccessViolationException в Visual Studio 2010?

    @Sumor
    Ошибка в строке
    if (count == 0)
    Нужно
    if (count != 0)
    В целом ещё несколько замечаний, но по вопросу именно так.
    Ответ написан
  • CCheckListBox - из-за чего кракозябры вместо текста?

    @Sumor
    Складывается ощущение, что у вас выставлена кодировка utf-32 (четырёхбайтная), а L"Channel 1" означает utf-16 (двухбайтная).
    Ответ написан
    Комментировать
  • Как создать свой элемент в visual stidio?

    @Sumor
    Для этого вы можете создать UserControl или CustomControl.
    В первом случае вы создаёте UserControl (пользовательский элемент управления) добавляя его к проекту как окно приложения. Настраиваете по сути как часть окна приложения добавляя нужные контролы на него и описывая логику в коде. После компиляции проекта контрол автоматически попадает на панель инструментов.
    Например:
    <UserControl x:Class="WpfApplication3.UserControl1"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <TextBox />
            <ListBox Grid.Row="1" />
        </Grid>
    </UserControl>


    Во втором случае вы как бы наследуетесь от базового контрола и добавляете к тему оформление и немного логики. В меню добавления элементов этот тип называется CustomControl или настраиваемый элемент управления.
    Либо через C#:
    public MyTextBox : TextBox
    {
    
    }


    Либо через Xaml:
    <TextBox x:Class="WpfApplication1.MyTextBox"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" >
       
    </TextBox>
    Ответ написан
    Комментировать
  • Как залинковать библиотеку в Visual Studio?

    @Sumor
    Правой кнопкой на проект, меню «свойства». Там вас интересует два параметра.
    1. С/С++ → «Общие» в правом списке свойств нужна первая: «Дополнительные каталоги включаемых файлов» (Additional Include Directories). Укажите путь к папке с файлами *.h из вашей библиотеки. Обычно это папка include.
    2. Компоновщик (Linker) → «Общие» в правом списке «Дополнительные каталоги библиотек» (Additional Library Directories). Укажите путь к папке с файлами *.lib из вашей библиотеки. Обычно это папка Lib.
    После этого можно добавлять #include и использовать функции из библиотеки.
    Ответ написан
    1 комментарий
  • Как перевести проект на c# SQL Server на SQL Server Compact Edition?

    @Sumor
    Основная проблема — совместимость типов и использование хранимых процедур.
    SQL Compact Edition поддерживает только таблицы и не поддерживает процедуры, функции и триггеры. Полный список отличий представлен в таблицах от Microsoft
    В коде достаточно поменять System.Data.SqlClient на System.Data.SqlServerCe.
    Классы с Sql* на SqlCe*, например, SqlConnection на SqlCeConnection.
    System.Data.SqlServerCe нужно дополнительно подключать в проект в ссылках (references).
    Ответ написан
    Комментировать