17.03.2014, 17:36 | #1 |
Участник
|
Как получить свойства .net контролов?
Есть форма. на ней ManagedHost ( имя - DynamicGridCtrl )
Хост привязан к System.Windows.Controls.Grid Но почему-то многие из свойств грида , кот описаны в http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx отсутствуют в выпадающем списке intelliSense. Как , например, получить свойство Grid.ColumnProperty ?? Проблема: Чтобы вывести txtBlock1 в ячейке грида, нужно указать X++: txtBlock1.SetValue( Grid.ColumnProperty, colNum); txtBlock1.SetValue( Grid.RowProperty, rowNum);[ (делаю как вот тут ) В форме пишу такой инит. X++: public void init() { System.Windows.Controls.ColumnDefinition gridCol1 = new System.Windows.Controls.ColumnDefinition(); System.Windows.Controls.ColumnDefinition gridCol2 = new System.Windows.Controls.ColumnDefinition(); System.Windows.Controls.RowDefinition gridRow1 = new System.Windows.Controls.RowDefinition(); System.Windows.Controls.RowDefinition gridRow2 = new System.Windows.Controls.RowDefinition(); System.Windows.Controls.TextBlock txtBlock1 = new System.Windows.Controls.TextBlock(); System.Windows.Controls.TextBlock txtBlock2 = new System.Windows.Controls.TextBlock(); System.Windows.Controls.ColumnDefinitionCollection ColumnDefinitions; System.Windows.Controls.RowDefinitionCollection RowDefinitions; System.Windows.Controls.Grid DynamicGrid; System.Windows.Controls.UIElementCollection Children; ; super(); DynamicGrid = DynamicGridCtrl.control(); ColumnDefinitions = DynamicGrid.get_ColumnDefinitions(); ColumnDefinitions.Add(gridCol1); ColumnDefinitions.Add(gridCol2); RowDefinitions = DynamicGrid.get_RowDefinitions(); RowDefinitions.Add(gridRow1); RowDefinitions.Add(gridRow2); txtBlock1.AddText( "My text 1"); txtBlock1.set_FontSize( 14); txtBlock1.SetValue( Grid.ColumnProperty, 1); txtBlock1.SetValue( Grid.RowProperty, 1); txtBlock2.AddText( "My Text 2"); txtBlock2.set_FontSize( 14); Children = DynamicGrid.get_Children(); Children.Add(txtBlock1); Children.Add(txtBlock2); } Последний раз редактировалось IKA; 17.03.2014 в 18:05. |
|
17.03.2014, 17:44 | #2 |
Участник
|
методы Grid.setRow и grid.SetColumn тоже отсутствуют
Судя по примеру в мсдн, все должно быть доступно даже в 3.0 Последний раз редактировалось IKA; 17.03.2014 в 17:55. |
|
17.03.2014, 18:34 | #3 |
Участник
|
Цитата:
Сообщение от IKA
Есть форма. на ней ManagedHost ( имя - DynamicGridCtrl ) Хост привязан к System.Windows.Controls.Grid. Но почему-то многие из свойств грида , кот описаны в http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx отсутствуют в выпадающем списке intelliSense. Как , например, получить свойство Grid.ColumnProperty ??
|
|
17.03.2014, 19:19 | #4 |
Участник
|
Я бы с радостью даже не писала этот пост, если бы так оно и было.
Но это не так. Например , для ColumnDefinitions есть только get_ColumnDefinitions() (set_ColumnDefinitions()- нет), а для ColumnProperty , о котором я пишу, так вообще нет аксессоров |
|
17.03.2014, 20:10 | #5 |
Участник
|
Во-первых, описание свойств объекта Grid следует смотреть для .NET Framework 3.0: класс System.Windows.Controls.Grid реализован в сборке PresentationFramework, а в References добавлена ссылка на версию 3.0.0.0 этой сборки. В MSDN написано, что свойство Grid.ColumnDefinitions "gets a ColumnDefinitionCollection", т.е. это свойство только для чтения (в противном случае было бы написано "gets or sets", как, скажем, для ClipToBounds или ContextMenu). Во-вторых, у Grid на самом деле нет свойства ColumnProperty - обратите внимание, что в приведенном примере переменная-grid называется MyGrid, в то время как методу TextBox.SetValue() передается Grid.ColumnProperty и Grid.ColumnProperty, т.е. передаются вовсе не значения свойств MyGrid, а идентификаторы т.н. DependencyProperty самого TextBox'а, см. описание метода SetValue.
|
|
17.03.2014, 20:35 | #6 |
Участник
|
Именно потому что передаются идентификаторы. у меня в коде не DynamicGrid.ColumnProperty в setValue а Grid.
Но даже если писать system.Windows.Controls.Grid.ColumnProperty и тоже не распознается в качестве параметра setValue. Как нужно к нему обращаться, я уже все перепробовала (? Последний раз редактировалось IKA; 17.03.2014 в 20:55. |
|
18.03.2014, 19:10 | #7 |
Участник
|
на вопрос "как" ответа нету ..
|
|
21.03.2014, 19:25 | #8 |
Читатель
|
Ну почему же... Есть X++: System.Windows.Controls.Grid::SetRow(txtBlock1, 0); System.Windows.Controls.Grid::SetColumn(txtBlock1, 0); |
|
04.06.2015, 12:36 | #9 |
Участник
|
Добрый день!
Мой вопрос, не о свойствах контролов, а о их добавлении. Есть метод "add" в "System.Windows.Forms.Control.ControlCollection" Чем через Х++ до него достучаться? X++: Object ControlCollection = System.Windows.Forms.get_Controls(); ... ControlCollection.add(SomeControl); Последний раз редактировалось Товарищ ♂uatr; 04.06.2015 в 12:44. |
|
04.06.2015, 13:24 | #10 |
Читатель
|
|
|
|
За это сообщение автора поблагодарили: Товарищ ♂uatr (1). |
04.06.2015, 15:55 | #11 |
Участник
|
|
|
|
|