powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обратиться о объекту зная относительное имя
25 сообщений из 27, страница 1 из 2
Обратиться о объекту зная относительное имя
    #38013184
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть кнопка. Я хочу проверить ее имя (а имена там 'Button1', 'Button2' до 8) на нечетность, и если она четкая, то хочу двигать ее и ту, которая имеет в имени цифру на 1 меньшую. Как это сделать? Вот мой код, он должен всё объяснить.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class MainWindow
    Public Property dvig As Button

    Private Property dvig2 As Button

    Private Sub Buttons_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click, Button4.Click, Button6.Click, Button8.Click, Button7.Click, Button5.Click, Button3.Click, Button1.Click
        Dim ob As Button
        ob = sender
        If ob.Name.Substring(ob.Name.Length - 1, 1) Mod 2 <> 0 Then
            dvig = ob
            'dvig2 = ?
        End If

    End Sub

End Class
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013221
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,
четкая кнопка - улыбнуло )) пасибо
зы sender смотри, это и есть твоя кнопка..
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013243
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, что я написал?) Я имел в виду четность числа в имени. А про решение - sender я рассмотрел и передал все от него объекту ob. Щас вспомнил, что можно по другому, хоть это и не читабельно)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class MainWindow
    Public Property dvig As Button

    Private Property dvig2 As Button

    Private Sub Buttons_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click, Button4.Click, Button6.Click, Button8.Click, Button7.Click, Button5.Click, Button3.Click, Button1.Click

        MsgBox(CType(sender, Button).Name.Substring(CType(sender, Button).Name.Length - 1, 1))
        If CType(sender, Button).Name.Substring(CType(sender, Button).Name.Length - 1, 1) Mod 2 <> 0 Then
            dvig = CType(sender, Button)
            'dvig2 = ?
        End If

    End Sub

End Class






А как мне обратиться к кнопке с именем как у той кнопки, но с цифрой на 1 меньше?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013246
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зря я наверно так сделал. Совсем не читабельно
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013248
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan, да что бы не парсить себе мозги, организуйте switch по имени.. их всего восемь,думаю не умрете
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013254
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно именно так. Потом их количество измениться. Знаю только, что их будет четное количество.
p.s. Знаю, что если их будет больше 10, то придется проверку переделать, но пока хоть так бы понять, как делать
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013264
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,
дак вы что все кнопки на один обработчик повесили?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013267
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, да, а что не видно?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013273
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,
ну и что, обратитесь к кнопке, и сделаете ее клик, и что дальше,
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013293
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
уж не хотите ли вы ее цвет поменять на желтый ( боже упаси...)
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013294
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, дальше кнопку с четной цифрой в названии буду двигать по одному сценарию, а с нечетной по другому
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013298
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan, забейте на предыдушие предложение. Не так вас понял
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013300
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan, а нет. Правильно)
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013303
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не подумайте! Это не раздвоение личности)
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013305
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обратиться к кнопке зная её относительное имя?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013307
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,
рефлексией
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013315
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlanГде-то в степи, дальше кнопку с четной цифрой в названии буду двигать по одному сценарию, а с нечетной по другому
а мне нравится, кнопки как тараканы бегают по форме, а главбух пытается их вовремя нажать, в этом что то есть.
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013329
pyroman69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlanУ меня есть кнопка. Я хочу проверить ее имя (а имена там 'Button1', 'Button2' до 8) на нечетность, и если она четкая, то хочу двигать ее и ту, которая имеет в имени цифру на 1 меньшую. Как это сделать? Вот мой код, он должен всё объяснить.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class MainWindow
    Public Property dvig As Button

    Private Property dvig2 As Button

    Private Sub Buttons_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click, Button4.Click, Button6.Click, Button8.Click, Button7.Click, Button5.Click, Button3.Click, Button1.Click
        Dim ob As Button
        ob = sender
        If ob.Name.Substring(ob.Name.Length - 1, 1) Mod 2 <> 0 Then
            dvig = ob
            'dvig2 = ?
        End If

    End Sub

End Class


Код: vbnet
1.
2.
3.
4.
If ob.Name.Substring(ob.Name.Length - 1, 1) Mod 2 <> 0 Then
   dvig = ob
   dvig2  = ob.Parent.Controls["ТутНадоУказатьИмяКонтрола"]
End If
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013366
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,

а как вы кнопки на форму кидаете, вручную или каким нить алгоритмом?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013367
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... А не проще в свойство Tag кнопки 2 засунуть ссылку на кнопку 1? Вообще в чём смысл всего этого? :)
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013557
taaamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pyroman69, спасибо огромное!
skyANA, хороший совет)


pationtaaamerlan,

а как вы кнопки на форму кидаете, вручную или каким нить алгоритмом?


Нет, там они сразу будут. Просто мне нужно представить приблизительный вариант заказчику (если это можно так назвать), а конкретного количества необходимых кнопок нет
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38013944
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
taaamerlan,
Вот хелпик накидал кнопочки ( Контролы) искать без рекурсии
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 static class Helper
    {
        public static T GetControl<T>(this Control @this, string controlName)where T:Control
        {
            if (@this == null)  throw new ArgumentNullException("source is ass");
            var sourceProperties = @this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance). Where(a => a.Name.Equals(controlName));
            var fieldInfos = sourceProperties as List<FieldInfo> ?? sourceProperties.ToList(); 
            if (fieldInfos.Any())
              return (T) fieldInfos.First().GetValue(@this);
            return null;
        }
    }


а пользоваться просто
Код: c#
1.
2.
3.
 Button bt = this.GetControl<Button>("Button_1");
            if (bt == null) return;
            bt.BackColor = Color.Yellow;
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38014302
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиtaaamerlan,
Вот хелпик накидал кнопочки ( Контролы) искать без рекурсии
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 static class Helper
    {
        public static T GetControl<T>(this Control @this, string controlName)where T:Control
        {
            if (@this == null)  throw new ArgumentNullException("source is ass");
            var sourceProperties = @this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance). Where(a => a.Name.Equals(controlName));
            var fieldInfos = sourceProperties as List<FieldInfo> ?? sourceProperties.ToList(); 
            if (fieldInfos.Any())
              return (T) fieldInfos.First().GetValue(@this);
            return null;
        }
    }



а пользоваться просто
Код: c#
1.
2.
3.
 Button bt = this.GetControl<Button>("Button_1");
            if (bt == null) return;
            bt.BackColor = Color.Yellow;



а почему Controls не использовал? а если кнопки динамически добавлены?
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38014315
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,
этож без обхода, я написал выше, ( кстсти забыл проверку на приведение сделать)
...
Рейтинг: 0 / 0
Обратиться о объекту зная относительное имя
    #38015396
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public static T GetControl<T>(this Control @this, string nameControl) where T : Control
        {
            if (@this == null || @this.IsDisposed) throw new ObjectDisposedException("source is ass");
            var result = default(T);
            foreach (Control control in @this.Controls)
            {
                if (control is T && string.Equals(nameControl, control.Name))
                {
                    result = control as T;
                    break;
                }
                result = GetControl<T>(control, nameControl);
                if (result != null)
                {
                    break;
                }
            }
            return result;
        }
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обратиться о объекту зная относительное имя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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