Последние темы Поиск
Общие форумы
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Форумы поддержки портала iXBT.com
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Страницы:Кликните, чтобы указать произвольную страницу12далее
leonid555: Вопрос по C#
leonid555
unregistered
Автор темы
Ответить
l
leonid555 unregistered Автор темы
24 года назад / 26 июля 2001 12:00
Есть функция
DWORD GetSysColor(
int nIndex // display element
);
где nIndex имеет следующие значения
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
и так далее
Я пишу
[DllImport("User32.dll")]
public static extern int GetSysColor(int nIndex);

Далее вызываю
int g=GetSysColor(????);
Что писать в качестве параметра если меня интересует COLOR_ACTIVEBORDER.

Добавление от 26-07-2001 12:08:

Поставлю вопрос по другому в какой структуре храниться информация о значениях
COLOR_ACTIVEBORDER
COLOR_ACTIVECAPTION
Vasilich
unregistered
Ответить
V
Vasilich unregistered
24 года назад / 26 июля 2001 12:11
Ну и пиши COLOR_ACTIVEBORDER. Это же константа. Подставишь другую, получишь цвет другой части.
Правда я не пользовался этой функцией.
С уважением, Андрей.
leonid555
unregistered
Автор темы
Ответить
l
leonid555 unregistered Автор темы
24 года назад / 26 июля 2001 12:22
Так мне нужно как-то узнать узнать какое число соотв константе, не методом тыка же перебирать
ANDYRE
Member
24 года на iXBT, с апреля 2001
109 фото на iXBT.photo
Чаще пишет в "Политика" (60%)
Россия, Москворечье
Инфо Ответить
A
ANDYRE Member
  24 года назад / 26 июля 2001 14:31
Это значение можешь найти в windows.h (по кр. мере оно там раньше было), только нафига изврат в виде дергания из .NET нативных вызовов Windows ???
Не проще ли использовать System.Drawing.SystemColors.ActiveBorder ?
Vasilich
unregistered
Ответить
V
Vasilich unregistered
24 года назад / 26 июля 2001 14:36
А
int i = COLOR_ACTIVEBORDER;
- не проходит?
Или поиск на COLOR_ACTIVEBORDER

С уважением, Андрей.

Смолянов Сергей
unregistered
Ответить
С
Смолянов Сергей unregistered
24 года назад / 26 июля 2001 15:43
cxjhb
leonid555
unregistered
Автор темы
Ответить
l
leonid555 unregistered Автор темы
24 года назад / 26 июля 2001 16:10
ANDYRE
Спасибо, может ты порекомендуешь какие нибудь ресурсы по C# или литературу.
seb
unregistered
Ответить
s
seb unregistered
24 года назад / 26 июля 2001 16:21
www.gotdotnet.com

http://www.dotsite.spb.ru/

ANDYRE
Member
24 года на iXBT, с апреля 2001
109 фото на iXBT.photo
Чаще пишет в "Политика" (60%)
Россия, Москворечье
Инфо Ответить
A
ANDYRE Member
24 года назад / 26 июля 2001 16:50
Самое лучшее - MSDN и примеры с beta2

http://www.csharpindex.com/

Геон
Member
23/790 ответов, #29 в рейтинге
12 лет на iXBT, с марта 2013
Чаще пишет в "Юмор" (35%)
Россия, Москва
Инфо Ответить
Геон Member
6 лет назад / 03 января 2019 19:37
Visual Studio 2017, C#, в программе присутствует перечисление:
1enum ScanCodeShort : short
2{
3...
4}
Оно громоздкое. Хочу его вынести в отдельный файл, не вынося из класса. Подскажите, пожалуйста, последовательность действий, как мне это реализовать?
CLX
Member
18/677 ответов
23 года на iXBT, с февраля 2002
197 фото на iXBT.photo
Чаще пишет в "Мониторы" (22%)
Россия, Ростов-на-Дону
Web-страница
Инфо Ответить
C
CLX Member
6 лет назад / 03 января 2019 19:45
Геон
очу его вынести в отдельный файл, не вынося из класса
https://docs.microsoft.com/ru-ru/dotnet/csharp/progr…asses-and-methods
Геон
Member
24/794 ответов, #29 в рейтинге
12 лет на iXBT, с марта 2013
Чаще пишет в "Юмор" (35%)
Россия, Москва
Инфо Ответить
Геон Member
6 лет назад / 06 января 2019 21:18
Вопрос, скорее всего, общий по проектированию (на любом языке программирования).

В процессе поиска на форумах подходящих примеров, для реализации нужного мне функционала, как правило натыкаюсь на примеры кода (вроде как, полного) без метода main(). Логика подсказывает то, что помимо кода из примера, у меня должен существовать базовый код (возможно, в другом файле), из которого будет осуществляться вызов кода указанного в примере. Но где этот код брать - не пишут, будто всем это настолько очевидно, что не стоит упоминания.

Что же у меня в проекте должно еще присутствовать, чтобы на одной странице (файле) был только код из примера, и проект (в Visual Studio) собирался бы?
ash of mind
Member
1560/5135 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
6 лет назад / 07 января 2019 14:22
Геон
Студия же при создании проекта (консольное приложение, винформс) сама генерит шаблонное приложение. Там, в частности, есть файл Program.cs, который выглядит так:
01using System;
02using System.IO;
03using System.Linq;
04  
05namespace ConsoleApp1
06{
07  class Program
08  {
09    static void Main(string[] args)
10    {
11    }
12  }
13}
метод Main - это application entry point, точка, откуда начинается исполнение кода. В него вы и можете вставлять вызов своих примеров.
Могут, конечно, быть нюансы (например, в WPF всего этого нет - там всё это делается в встраиваемых компилятором методах класса App) - но, думаю, тут не тот случай.
Геон
Member
25/796 ответов, #29 в рейтинге
12 лет на iXBT, с марта 2013
Чаще пишет в "Юмор" (35%)
Россия, Москва
Инфо Ответить
Геон Member
6 лет назад / 07 января 2019 18:38
ash of mind

Я, практически сплошняком, натыкался на примеры, когда код в примере был вроде как полный (с подключением библиотек using ...; с областью видимости), со всем но без метода Main (о чем верещал сборщик Visual Studio). А, вставленный в Main - он бы не работал. Наоборот - метод Main нужно было вставлять в него. Но в Main должна была быть реализована возможность обратиться к остальным методам, многие из которых имели входные параметры, в которые нужно было передать значение с правильным типом, и т.д.

Скрытый текст
Lucy
Member
270/12149 ответов
18 лет на iXBT, с июня 2006
Чаще пишет в "Юмор" (49%)
Португалия, Lisbon
Инфо Ответить
Lucy Member
6 лет назад / 07 января 2019 18:40
leonid555
Я пишу
[DllImport("User32.dll")]
public static extern int GetSysColor(int nIndex);


хороший сайт для референции: https://www.pinvoke.net
для Вашего случая:
https://www.pinvoke.net/default.aspx/user32.getsyscolor
http://www.pinvoke.net/default.aspx/Constants/COLOR_.html
ash of mind
Member
1562/5137 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
6 лет назад / 08 января 2019 10:21
Lucy
хороший сайт для референции: https://www.pinvoke.net
Есть еще вот такая штука: https://github.com/jaredpar/pinvoke
Помогает в тех случаях, когда чего-то нет на pinvoke.net (а там далеко не всё), плюс умеет переводить нативные сниппеты в managed-код (сама программа - реинкарнация P/Invoke Interop Assistant, обитавшего на почившем в бозе кодеплексе).
Геон
Member
50/896 ответов, #29 в рейтинге
12 лет на iXBT, с марта 2013
Чаще пишет в "Юмор" (35%)
Россия, Москва
Инфо Ответить
Геон Member
6 лет назад / 01 июля 2019 23:35
https://docs.microsoft.com/ru-ru/windows/uwp/devices…nsors/gatt-client
В параграфе "Отправка запросов для ближайших устройств", пример кода на C#.

В VS2017 создал заготовку проекта "Консольное приложение (.NET Framework)", вставил код, вот так:
01using System;
02using System.Collections.Generic;
03using System.Linq;
04using System.Text;
05using System.Threading.Tasks;
06using Windows.Devices.PointOfService;
07  
08namespace ClientBluetoothGATT
09{
10    class Program
11    {
12        static void Main(string[] args)
13        {
14            // Query for extra properties you want returned
15            string[] requestedProperties = { "System.Devices.Aep.DeviceAddress", "System.Devices.Aep.IsConnected" };
16  
17            DeviceWatcher deviceWatcher =
18                        DeviceInformation.CreateWatcher(
19                                BluetoothLEDevice.GetDeviceSelectorFromPairingState(false),
20                                requestedProperties,
21                                DeviceInformationKind.AssociationEndpoint);
22  
23            // Register event handlers before starting the watcher.
24            // Added, Updated and Removed are required to get all nearby devices
25            deviceWatcher.Added += DeviceWatcher_Added;
26            deviceWatcher.Updated += DeviceWatcher_Updated;
27            deviceWatcher.Removed += DeviceWatcher_Removed;
28  
29            // EnumerationCompleted and Stopped are optional to implement.
30            deviceWatcher.EnumerationCompleted += DeviceWatcher_EnumerationCompleted;
31            deviceWatcher.Stopped += DeviceWatcher_Stopped;
32  
33            // Start the watcher.
34            deviceWatcher.Start();
35  
36            Console.WriteLine("Здравствуй Мир!");
37            Console.ReadKey(true);
38        }
39    }
40}
Код не компилируется, выдает кучу ошибок. Возможно, какой-то библиотеки не хватает. Либо я не туда код вставил. Либо - не тот тип проекта.

Подскажите, пожалуйста, как приведенный по ссылке код грамотно вставить в проект C# так, чтобы он компилировался.
К сообщению приложены файлы:
ash of mind
Member
1591/5195 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
6 лет назад / 02 июля 2019 07:20
Геон
В VS2017 создал заготовку проекта "Консольное приложение (.NET Framework)"
Неправильно. Изложенное по ссылке - для UWP, соответственно, тип проекта должен быть Blank App (Universal Windows) или Console App (Universal Windows). Такие проекты можно создавать только в windows версии >=8.0 (и использоваться они могут тоже только с windows>=8.0). Как создать простейший хелловорлд изложено, например, здесь. Если нет шаблона для Console App (Universal Windows), то его нужно установить отдельно (см. здесь).

Возможно, какой-то библиотеки не хватает.
По вашей же ссылке в самом верху есть две ссылки на описание неймспейсов, классы из которых используются в примерах. Страницы по этим ссылкам в самом верху содержат информацию о том, в каких сборках находятся классы этих неймспейсов - эти сборки нужно добавить в референсы проекта.
rex2701
Member
1/353 ответов
12 лет на iXBT, с сентября 2012
Чаще пишет в "Тех. поддержка" (40%)
Россия, 31 рег.
Инфо Ответить
rex2701 Member
5 лет назад / 21 ноября 2019 18:43
Подскажите, пожалуйста, такой момент:
Допустим, есть форма с кнопкой. Надо чтобы все события от кнопки обрабатывались в одном месте.
К примеру, в событиях кнопки на MouseDown и на MouseUp прописываю один и тот же обработчик Button_Action.
Получаю автоматически сгенерированный код:
1private void Button_Action(object sender, EventArgs e)
2{
3  
4}
Как теперь внутри написать что-то вроде:
1if (событие == MouseDown)
2{
3    ...
4}
5if (событие == MouseUp)
6{
7    ...
8}
ash of mind
Member
1611/5227 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
5 лет назад / 22 ноября 2019 06:59
rex2701
1. В winforms из MouseEventArgs нельзя получить сведения о том, нажата или отпущена кнопка мыши (в WPF можно, но я сильно подозреваю, что речь именно про winforms). Можно, конечно, залезть куда-нибудь вглубь системы, и получить такую информацию, но зачем нужен этот велосипед, если
2. Требование обработки в одном месте вовсе не означает, что этим местом обязательно должен быть метод хэндлера события. Вполне можно сделать вот так:
01public enum MouseEventType
02{
03  MouseDown,
04  MouseUp
05}
06...................
07  
08void OnMouseDown(object sender, MouseEventArgs e)
09  => PrepareMouseEvent(sender, e, MouseEventType.MouseDown);
10  
11void OnMouseUp(object sender, MouseEventArgs e)
12  => PrepareMouseEvent(sender, e, MouseEventType.MouseUp);
13  
14void PrepareMouseEvent(object sender, EventArgs ea, MouseEventType eventType)
15{
16  if (!(ea is MouseEventArgs mea)) return;
17  // вот здесь всё и обрабатывать
18}
rex2701
Member
2/354 ответов
12 лет на iXBT, с сентября 2012
Чаще пишет в "Тех. поддержка" (40%)
Россия, 31 рег.
Инфо Ответить
rex2701 Member
5 лет назад / 22 ноября 2019 08:17
ash of mind
Да, речь про Windows Forms.
Мне не нужно получать состояние физических кнопок, это просто условный пример.
В общем задача выглядит так: если взять любой стандартный контрол и в его свойствах открыть события - практически все они должны быть заведены на один обработчик, потому что сначала должна быть выполнена куча общего кода, и только потом конкретная логика по каждому событию. Поэтому надо как-то определить имя события.
Так же есть задача, чтобы обработчик был один не только для всех событий, но и для разных контролов. С этим проблем нет, на sender всё нормально завязывается и обрабатывается.
Можно, конечно, не е....ть себе мозг и сгенерировать кучу отдельных обработчиков и в каждом из них сделать вызов некой CommonTask(), куда запихнуть всё общее. Но это приведёт к дикому распуханию исходного текста, что видится некрасивым.
ErmIg
Member
514/972 ответов
18 лет на iXBT, с января 2007
Чаще пишет в "Программирование" (49%)
Беларусь, Минск
Web-страница
Инфо Ответить
ErmIg Member
5 лет назад / 22 ноября 2019 08:35
У Form есть метод, который можно переопределить:
1protected override void WndProc (ref System.Windows.Forms.Message m);
ash of mind
Member
1612/5228 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
5 лет назад / 22 ноября 2019 09:00
rex2701
Мне не нужно получать состояние физических кнопок, это просто условный пример.
Однако надо разделять события MouseDown и MouseUp. У хэндлеров этих событий одинаковая сигнатура, поэтому разделить их можно только по признаку, нажата клавиша мыши, или нет. Но с состоянием клавиши в винформс см. выше.

Можно, конечно, не е....ть себе мозг и сгенерировать кучу отдельных обработчиков
Можно вообще ничего не генерить, просто немного поработать руками:
1public Form1()
2{
3  InitializeComponent();
4  MouseDown += (s, e) => PrepareMouseEvent(s, e, MouseEventType.MouseDown);
5  MouseUp += (s, e) => PrepareMouseEvent(s, e, MouseEventType.MouseUp);
6}
и ничего не будет распухать.
rex2701
Member
3/355 ответов
12 лет на iXBT, с сентября 2012
Чаще пишет в "Тех. поддержка" (40%)
Россия, 31 рег.
Инфо Ответить
rex2701 Member
5 лет назад / 22 ноября 2019 10:16
ErmIg
На первый взгляд - то, что нужно. Хоть и не полностью ".NET style".
Спасибо, покопаюсь в этом.

ash of mind
То есть опять, каждое событие расписывать отдельно? Те же яйки, только в профиль.
Ещё раз: открываем у контрола (любого, неважно) список всех его возможных событий. У каждого события есть имя. Это имя как-то можно получить? Если нет - то на этом вопрос будет закрыт.
ash of mind
Member
1613/5229 ответов, #10 в рейтинге
17 лет на iXBT, с июля 2007
1 фото на iXBT.photo
Чаще пишет в "Программирование" (30%)
Инфо Ответить
a
ash of mind Member
5 лет назад / 22 ноября 2019 10:48
rex2701
То есть опять, каждое событие расписывать отдельно?
А вы думаете, оно не расписывается отдельно, когда вы его навешиваете в дизайнере, даже если используется один хэндлер на всё? Все ваши события, навешанные через дизайнер, прописаны в классе формы в его partial-части. Вас смущает, что это будет в основной части? Это можно вынести в ещё одну partial-часть, или спрятать под регион.

Ещё раз: открываем у контрола (любого, неважно) список всех его возможных событий. У каждого события есть имя. Это имя как-то можно получить?
Да легко:
1typeof(Button)
2  .GetEvents(BindingFlags.Instance | BindingFlags.Public)
3  .Select(e=>e.Name)
4  .ToList()
5  .ForEach(Console.WriteLine);
- 71 строка в консоли. Только как это поможет внутри обработчика события? Он в общем случае понятия не имеет, какое событие его вызвало.
Переопределение WndProc - это будет ещё больше работы с расписыванием каждого события, и приведёт к абсолютно ненужному распуханию кода, т.к. придётся расписывать вручную и раскладывать по обработчикам все возможные варианты Msg, в зависимости от него - lParam/wParam, аккуратно возвращать результат, итд. Всё это уже корректно реализовано в базовых классах, и заново всё это велосипедить - как минимум пустая трата времени.
Lucy
Member
287/15792 ответов
18 лет на iXBT, с июня 2006
Чаще пишет в "Юмор" (49%)
Португалия, Lisbon
Инфо Ответить
Lucy Member
5 лет назад / 22 ноября 2019 11:50
rex2701
В общем задача выглядит так: если взять любой стандартный контрол и в его свойствах открыть события - практически все они должны быть заведены на один обработчик, потому что сначала должна быть выполнена куча общего кода, и только потом конкретная логика по каждому событию. Поэтому надо как-то определить имя события.
Так же есть задача, чтобы обработчик был один не только для всех событий, но и для разных контролов.



не совсем то, что Вы хотите (одного обработчика не получите, будет 3-4), но позволяет обрабатывать события от элементов на уровне Form:
1// Set KeyPreview object to true to allow the form to process
2// the key before the control with focus processes it.
3Form1.KeyPreview = true;
4...
5// Associate the event-handling method with the
6// KeyDown event.
7Form1.KeyDown += new KeyEventHandler(Form1_KeyDown);
источник с примером: https://docs.microsoft.com/en-us/dotnet/api/system.w…s_Form_KeyPreview
переведено на русский: https://docs.microsoft.com/ru-ru/dotnet/api/system.w…s_Form_KeyPreview
rex2701
Member
4/356 ответов
12 лет на iXBT, с сентября 2012
Чаще пишет в "Тех. поддержка" (40%)
Россия, 31 рег.
Инфо Ответить
rex2701 Member
5 лет назад / 22 ноября 2019 12:32
Lucy
Да, это немного не то.

ash of mind
Только как это поможет внутри обработчика события? Он в общем случае понятия не имеет, какое событие его вызвало.

Вот! Что и требовалось узнать.
Теперь зайдём с другой стороны: "понятия не имеет в общем случае", а в частном? Как-то можно ему передать эту информацию? Есть вообще такой функционал в .NET?
Ещё я вижу, что автоматически сгенерированный код для формы и контролов с их событиями всегда выглядит примерно так:
1...
2this.textBox1.Enter += new System.EventHandler(this.textBox1_Enter);
3...
4  
5private void textBox1_Enter(object sender, EventArgs e)
6{
7    ...
8}
Т.е. конструктор для EventArgs ничего не создаёт.

Можно ли это изменить, допустим, так:
01...
02this.textBox1.Click += new System.EventHandler(this.MyEventHandler, "Click");
03this.textBox1.Enter += new System.EventHandler(this.MyEventHandler, "Enter");
04this.textBox1.Move += new System.EventHandler(this.MyEventHandler, "Move");
05... // и т.д.
06  
07private void MyEventHandler(object sender, string eName)
08{
09    switch (eName)
10    {
11         case "Click":
12         ...
13         case "Enter":
14         ...
15         case "Move":
16         ... // и т.д.
17}
Если, вдруг, EventArgs нельзя менять на другой тип, то как в него запихнуть имя события?
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Страницы:Кликните, чтобы указать произвольную страницу12далее