powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование типов
15 сообщений из 15, страница 1 из 1
Преобразование типов
    #39645492
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста,
как можно преобразовать пользовательскую форму
Код: c#
1.
group.Owner.Parent.FindForm()


к типу
Код: c#
1.
Form

?

Заранее благодарен.
...
Рейтинг: 0 / 0
Преобразование типов
    #39645512
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

это называется приведение к базовому типу
Код: c#
1.
var form = (Form)group.Owner.Parent.FindForm()
...
Рейтинг: 0 / 0
Преобразование типов
    #39645520
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

не помогает
Код: c#
1.
((Form)group.Owner.Parent).GetType().Name


возвращает не
Код: c#
1.
Form

, а название объекта формы, которую я создал.
...
Рейтинг: 0 / 0
Преобразование типов
    #39645521
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

object.GetType() всегда возвращает реальный тип объекта, ничего удивительного в этом нет.
что вы хотите сделать, напишите нормально, мы тут не экстрасенсы
...
Рейтинг: 0 / 0
Преобразование типов
    #39645525
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Мне надо реализовать такую штуковину, а
Код: c#
1.
Form

все портит.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 foreach (var v in _queue)
            {
                switch (v.GetType().Name)
                {
                    case "LayoutControlItem":
                        break;
                    case "Button":
                        break;
                    case "XtraTabPage":

                        break;
                    case "LayoutControlGroup":

                        break;
                    default:
                        break;
                }
...
Рейтинг: 0 / 0
Преобразование типов
    #39645532
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

в смысле такую

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
foreach (var v in _queue)
            {
                switch (v.GetType().Name)
                {
                    case "Form":
                        break;
                    case "LayoutControlItem":
                        break;
                    case "Button":
                        break;
                    case "XtraTabPage":

                        break;
                    case "LayoutControlGroup":

                        break;
                    default:
                        break;
                }
...
Рейтинг: 0 / 0
Преобразование типов
    #39645541
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahRoman Mejtes,
Подозреваю, что это надо реализовать иначе:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
foreach (var v in _queue)
  if (v is Form)
  {
    // что-то делаем с Form
  }
  else if (v is LayoutControlItem)
  {
    // что-то делаем с LayoutControlItem
  }
  else if (v is Button)
  {
    // что-то делаем с Button
  }
  else if (v is XtraTabPage)
  {
    // что-то делаем с XtraTabPage
  }
  else if (v is LayoutControlGroup)
  {
    // что-то делаем с LayoutControlGroup
  }
  else
  {
    // что-то делаем с экземплярами прочих типов
  }
...
Рейтинг: 0 / 0
Преобразование типов
    #39645545
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                switch (v)
                {
                    case Form form:
                        form.Caption="ddd";
                        break;
                    case LayoutControlItem item:
                        break;
                    case Button button:
                        button.Left = 5;
                        break;
                    default:
                        break;
                }
...
Рейтинг: 0 / 0
Преобразование типов
    #39645552
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahRoman Mejtes,

в смысле такую

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
foreach (var v in _queue)
            {
                switch (v.GetType().Name)
                {
                    case "Form":
                        break;
                    case "LayoutControlItem":
                        break;
                    case "Button":
                        break;
                    case "XtraTabPage":

                        break;
                    case "LayoutControlGroup":

                        break;
                    default:
                        break;
                }


то есть, если имя типа изменится, вся логика вашей программы пойдет по .... и найти причину может быть не очень просто.
Советую в каждом switch, где вариант default не определен возбуждать исключение ArgumentOutOfRangeException.

2_Shocker.Pro: фигасе, это из 6/7 версии или так всегда было? 1 раз такое вижу :)
...
Рейтинг: 0 / 0
Преобразование типов
    #39645554
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes2_Shocker.Pro: фигасе, это из 6/7 версии или так всегда было? 1 раз такое вижу :)В 7-й версии появилось. Странно, что ты не знаешь, ибо необычайно удобно в WPF, так как там очень часть приходится иметь дело с типом object
...
Рейтинг: 0 / 0
Преобразование типов
    #39645555
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProRoman Mejtes2_Shocker.Pro: фигасе, это из 6/7 версии или так всегда было? 1 раз такое вижу :)В 7-й версии появилось. Странно, что ты не знаешь, ибо необычайно удобно в WPF, так как там очень часть приходится иметь дело с типом objectЕще можно так
Код: c#
1.
2.
if (obj is ClassA cla && cla.MyProp is ClassB clb)
  clb.Name="dd"; 
...
Рейтинг: 0 / 0
Преобразование типов
    #39645558
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВ 7-й версии появилось.а еще можно в switch добавлять дополнительные условия через when, то есть фактически switch теперь полноценно заменяет каскад if-ов
...
Рейтинг: 0 / 0
Преобразование типов
    #39645577
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

я уже давно не работаю с WPF

Теперь знаю, давно хотел эту конструкцию
...
Рейтинг: 0 / 0
Преобразование типов
    #39645671
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesShocker.Pro,

я уже давно не работаю с WPF

Теперь знаю, давно хотел эту конструкцию
А причем здесь WPF? Это базовая конструкция языка 7-й версии, называется pattern matching: https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
...
Рейтинг: 0 / 0
Преобразование типов
    #39645682
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА причем здесь WPF?Shocker.Proибо необычайно удобно в WPF, так как там очень часть приходится иметь дело с типом object
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Преобразование типов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]