Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024

Обратиться к вложенному контролу (TextBox в ListBox)

13.02.2012, 18:03. Показов 6775. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!Проблема такая,у меня есть Textbox внутри ListBoxa. Я хочу изменять в функции значения свойства Text, но явного доступа не могу получить,как мне обратиться к Textbox?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2012, 18:03
Ответы с готовыми решениями:

MVVM. Как прибиндить TextBox к вложенному ListBox в ListBoxItem основного ListBox
<UserControl x:Class="Wpf_CareerPattern.Views.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...

Обратиться к вложенному контролу
Добрый день. Помогите, пжлста, начинающему. На Form1 есть TableLayoutPanel1, во втором ряду первого столбца в нее вложена...

Как обратиться к контролу типа Textbox по имени и изменить его свойства
Подскажите пожалуйста как обратиться к контролу типа Textbox по имени и изменить его свойства. Пример рабочий на VBA, а в VB.Net не...

20
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
13.02.2012, 23:18
... что мешает обратиться по имени?
VB.NET
1
TextBox1.Text = "Hello, World!"
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
13.02.2012, 23:19  [ТС]
Ошибка выползает,типа не видит в этом файле
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
13.02.2012, 23:33
Так присвойте оному тексбоксу имя...

Если Вы добавляете его в разметке XAML, тогда присвойте ему атрибут Name, например, Name="myTextBox":

XML
1
2
3
4
5
6
7
8
9
10
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox Name="ListBox1" >
            <TextBox Name="myTextBox"/> 
        </ListBox>        
    </Grid>
</Window>
... и дальше из кода обращайтесь по этому имени.

Если добавляете его из кода, то сделайте так:

VB.NET
1
2
Dim myTextBox As New TextBox
ListBox1.Items.Add(myTextBox)
И далее в коде:

VB.NET
1
myTextBox.Text = "Hello, World!"
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
13.02.2012, 23:35  [ТС]
Тут прикол в том что я так уже делал,все равно не работает,я пытался биндить его но бесполезно,прописал имя и все равно не видит
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
13.02.2012, 23:40
Почему же у меня работает?

XML
1
2
3
4
5
6
7
8
9
10
11
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox Name="ListBox1" Margin="147,41,184,109">
            <TextBox Name="myTextBox"/> 
        </ListBox>
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="205,249,0,0" Name="Button1" VerticalAlignment="Top" Width="75" />
    </Grid>
</Window>
VB.NET
1
2
3
4
5
Class MainWindow 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
        myTextBox.Text = "Hello, World!"
    End Sub
End Class
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.02.2012, 00:19  [ТС]
я пишу на C# ,у меня там не только он один там вложенных контролов масса
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
14.02.2012, 00:58
А какое это имеет значение если имя уникально?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.02.2012, 18:11  [ТС]
Вот такую ошибку выдает
Error 1 The name 'MyTextBox' does not exist in the current context C:\Users\Administrator\Desktop\SetBetGo\ SetBetGo\TrayAgent\SetBetGoUI\SystemFram e.xaml.cs 719 16 SetBetGoUI
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
14.02.2012, 19:01
Он не находит атрибут Name ="MyTextBox" в разметке... Вы его туда добавили?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
21.02.2012, 15:28  [ТС]
Вопрос еще актуален,

Тут очень сложная иерархия в проекте сначала в классе TBCHelper объявлено
C#
1
 public class StakePlan : DependencyObject
потом в другом классе System свойство
C#
1
public ThreadableObservableCollection<TBCHelper.StakePlan> StakePlan
и теперь попробовал конструкцию
C#
1
StakePlane.FindChild<TextBox>("Like").Text="Что-то"
Но присваивает только первому текстбоху остальные пусты
цикл такой
C#
1
2
3
4
 foreach (TBCHelper.StakePlan stakeItem in System.StakePlan.ToList())
            {
              StakePlane.FindChild<TextBox>("Like").Text=stakeitem.stake;
            }
По сути обращение к внутреннему контролу но не получается что-то,а может binding попробывать?Подскажите кто знает
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.02.2012, 16:47  [ТС]
Никто не знает как?Хорошо вопрос полегче как обратиться к вложенным TextBox внутри Listbox???Не к первому а ко всем
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
22.02.2012, 22:15
Здравствуйте!

Можно обратиться в цикле.

VB.NET
1
2
3
For Each item In MyListBox.Items
      item.text = "Hello, World!"
Next
Добавлено через 23 минуты
Плохо разбираюсь в синаксисе C#, но помоему Вы что-то с циклом намудрили. В Вашем случае будет примерно так (VB):

VB.NET
1
2
3
For Each stakeItem In TBCHelper.StakePlan
    stakeItem.Text = stakeitem.stake
Next
Т.е. TBCHelper.StakePlan у Вас и так коллекция, зачем ещё раз делать .ToList?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.02.2012, 23:26  [ТС]
Не получается таким образом
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
23.02.2012, 00:03
А у меня почему-то получается.

XML
1
2
3
4
5
6
<Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Name="Mygrid" />    
</Window>

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Class MainWindow 
    Private Sub MainWindow_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
        Dim MyListBox As New ListBox
        MyListBox.Items.Add(New TextBox)
        MyListBox.Items.Add(New TextBox)
        MyListBox.Items.Add(New TextBox)
        Dim n As Integer
        For Each TextBox In MyListBox.Items
            n += 1
            TextBox.text = "Добавили в " & n & "-й Textbox число " & n
        Next
        Mygrid.Children.Add(MyListBox)
    End Sub
End Class
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
23.02.2012, 01:55  [ТС]
Нет пробовал ни в какую,дело в том что в C# преобразование из Textbox в Listbox.items недопустимо,ошибку выдает
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
23.02.2012, 02:03
Так замените название переменной... Она просто видимо конфликтует с самим классом Textbox. Например, задайте его как myTextBox:

VB.NET
1
2
3
4
For Each myTextBox In MyListBox.Items
       n += 1
       myTextBox.text = "Добавили в " & n & "-й Textbox число " & n
Next
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
23.02.2012, 11:30  [ТС]
Не не у Mytextbox нужно указать тип,попробуйте то же самое на шарпе набрать и увидите
0
55 / 55 / 5
Регистрация: 09.06.2011
Сообщений: 207
23.02.2012, 13:06
Пожалуйста, указываю тип на Бейсике и всё по-прежнему пашет:

VB.NET
1
2
3
4
For Each myTextBox As TextBox In MyListBox.Items
       n += 1
       myTextBox.text = "Добавили в " & n & "-й Textbox число " & n
Next
Ну правильно! Я-то программно запихнул в листбокс сами TextBox'ы и ничего более, а у Вас там какой контейнер? Небось TextBox в StackPanel поместили?

Лучше покажите всё дерево элементов вложенных в ListBox, будет проще помочь...
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
23.02.2012, 13:18  [ТС]
Цитата Сообщение от REALIST07 Посмотреть сообщение
попробуйте то же самое на шарпе набрать и увидите
Бейсик это бейсик,а на шарпе ошибку выдает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2012, 13:18
Помогаю со студенческими работами здесь

Массив: Как мне обратиться к самому первому вложенному массиву в массиве массивов?
подскажите пожалуйста есть массив array(50) а в нем еще пару массивов { .... } как мне обратиться к самому первому массиву (внешнему). ...

Обратиться к уникальному контролу
Приветствую. Такая проблема создал коллекцию контролов, и входе работы программы пользователь будет добавлять в эту коллекцию разные...

Не удается обратиться к контролу по имени
Здесь https://www.cyberforum.ru/windows-forms/thread110436.html смотрел! Пишу так Controls as DataGridView).Rows.Add(); В ответ...

Как обратиться к контролу по индексу
int i = xxx; textBox .Text =&quot;dfsdfds&quot;; как такое сделать?

Как из модуля обратиться к контролу на форме?
Как из модуля обратиться к контролу (например, ListView1) на форме (Form1)? Form1.ListView1... не проходит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru