HierarchicalDataBoundControlDesigner Класс
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет поддержку во время разработки в узле конструктора для элемента управления HierarchicalDataBoundControl.
public ref class HierarchicalDataBoundControlDesigner : System::Web::UI::Design::WebControls::BaseDataBoundControlDesigner
public class HierarchicalDataBoundControlDesigner : System.Web.UI.Design.WebControls.BaseDataBoundControlDesigner
type HierarchicalDataBoundControlDesigner = class
inherit BaseDataBoundControlDesigner
Public Class HierarchicalDataBoundControlDesigner
Inherits BaseDataBoundControlDesigner
- Наследование
-
HierarchicalDataBoundControlDesigner
- Производный
В следующем примере кода показано, как расширить HierarchicalDataBoundControlDesigner класс, чтобы изменить внешний вид элементов управления, производных от HierarchicalDataBoundControl элемента управления во время разработки.
В примере класс является производным MyHierarchicalDataBoundControl
от HierarchicalDataBoundControl. Класс MyHierarchicalDataBoundControl
является просто копией HierarchicalDataBoundControl. В этом примере класс также является производным MyHierarchicalDataBoundControlDesigner
HierarchicalDataBoundControlDesigner от класса и помещает DesignerAttribute объект для в MyHierarchicalDataBoundControlDesigner
MyHierarchicalDataBoundControl
класс .
Переопределяет MyHierarchicalDataBoundControlDesigner
метод , PreFilterProperties чтобы сделать NamingContainer свойство видимым в сетке Свойства во время разработки. Он переопределяет GetDesignTimeHtml метод для создания разметки для заполнителя, если разметка времени разработки имеет значение null
или Empty, или если разметка времени разработки является пустым <span>
блоком (т. е. если между <span
тегами ...>
и </span>
нет внутренней разметки).
using System;
using System.IO;
using System.Web;
using System.Drawing;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
namespace Examples.CS.WebControls.Design
{
// The MyHierarchicalDataBoundControl is a copy of the
// HierarchicalDataBoundControl.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.
MyHierarchicalDataBoundControlDesigner))]
public class MyHierarchicalDataBoundControl :
HierarchicalDataBoundControl
{
} // MyHierarchicalDataBoundControl
// Override members of the ierarchicalDataBoundControlDesigner.
[ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]
public class MyHierarchicalDataBoundControlDesigner :
HierarchicalDataBoundControlDesigner
{
const string bracketClose = ">";
const string spanOpen = "<SPAN";
const string spanClose = "</SPAN>";
// Return the markup for a placeholder, if the inner markup is empty.
// For brevity, the code that is used to detect embedded white_space
// in the tags is not shown.
public override string GetDesignTimeHtml()
{
// Get the design-time markup from the base method.
string markup = base.GetDesignTimeHtml();
// If the markup is null or empty, return the markup
// for the placeholder.
if(string.IsNullOrEmpty(markup))
return GetEmptyDesignTimeHtml();
// Make the markup uniform case so that the IndexOf will work.
string MARKUP = markup.ToUpper();
int charX;
// Look for a <span ...> tag.
if ((charX = MARKUP.IndexOf(spanOpen)) >= 0)
{
// Find closing bracket of span open tag.
if ((charX = MARKUP.IndexOf(bracketClose,
charX+spanOpen.Length)) >= 0)
{
// If the inner markup of <span ...></span> is empty,
// return the markup for a placeholder.
if (string.Compare(MARKUP, charX + 1, spanClose, 0,
spanClose.Length) == 0)
return GetEmptyDesignTimeHtml();
}
}
// Return the original markup, if the inner markup is not empty.
return markup;
}
// Shadow the control properties with design-time properties.
protected override void PreFilterProperties(IDictionary properties)
{
string namingContainer = "NamingContainer";
// Call the base method first.
base.PreFilterProperties(properties);
// Make the NamingContainery visible in the Properties grid.
PropertyDescriptor selectProp =
(PropertyDescriptor)properties[namingContainer];
properties[namingContainer] =
TypeDescriptor.CreateProperty(selectProp.ComponentType,
selectProp, BrowsableAttribute.Yes);
} // PreFilterProperties
} // MyHierarchicalDataBoundControlDesigner
} // Examples.CS.WebControls.Design
Imports System.IO
Imports System.Web
Imports System.Drawing
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design.WebControls
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Namespace Examples.VB.WebControls.Design
' The MyHierarchicalDataBoundControl is a copy of the
' HierarchicalDataBoundControl.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design. _
MyHierarchicalDataBoundControlDesigner))> _
Public Class MyHierarchicalDataBoundControl
Inherits HierarchicalDataBoundControl
End Class
' Override members of the HierarchicalDataBoundControlDesigner.
<ReflectionPermission(SecurityAction.Demand, Flags:=ReflectionPermissionFlag.MemberAccess)> _
Public Class MyHierarchicalDataBoundControlDesigner
Inherits HierarchicalDataBoundControlDesigner
Private Const bracketClose As String = ">"
Private Const spanOpen As String = "<SPAN"
Private Const spanClose As String = "</SPAN>"
' Return the markup for a placeholder, if the inner markup is empty.
' For brevity, the code that is used to detect embedded white_space
' in the tags is not shown.
Public Overrides Function GetDesignTimeHtml() As String
' Get the design-time markup from the base method.
Dim markup As String = MyBase.GetDesignTimeHtml()
' If the markup is null or empty, return the markup
' for the placeholder.
If String.IsNullOrEmpty(markup) Then
Return GetEmptyDesignTimeHtml()
End If
' Make the markup uniform case so that the IndexOf will work.
Dim markupUC As String = markup.ToUpper()
Dim charX As Integer
' Look for a <span ...> tag.
charX = markupUC.IndexOf(spanOpen)
If charX >= 0 Then
' Find closing bracket of span open tag.
charX = markupUC.IndexOf(bracketClose, charX + spanOpen.Length)
If charX >= 0 Then
' If the inner markup of <span ...></span> is empty,
' return the markup for a placeholder.
If String.Compare(markupUC, charX + 1, _
spanClose, 0, spanClose.Length) = 0 Then
Return GetEmptyDesignTimeHtml()
End If
End If
End If
' Return the original markup, if the inner markup is not empty.
Return markup
End Function ' GetDesignTimeHtml
' Shadow the control properties with design-time properties.
Protected Overrides Sub PreFilterProperties( _
ByVal properties As IDictionary)
Dim namingContainer As String = "NamingContainer"
' Call the base method first.
MyBase.PreFilterProperties(properties)
' Make the NamingContainery visible in the Properties grid.
Dim selectProp As PropertyDescriptor = _
CType(properties(namingContainer), PropertyDescriptor)
properties(namingContainer) = _
TypeDescriptor.CreateProperty(selectProp.ComponentType, _
selectProp, BrowsableAttribute.Yes)
End Sub
End Class
End Namespace ' Examples.VB.WebControls.Design
В узле конструктора, когда пользователь переключается из режима "Источник" в режим конструктора, анализируется исходный код разметки, описывающий элемент управления, производный от HierarchicalDataBoundControl абстрактного класса, и в области конструктора создается версия элемента управления во время разработки. Когда пользователь вернется в исходное представление, элемент управления времени разработки сохраняется в исходном коде разметки и редактируется в разметке для веб-страницы. Класс HierarchicalDataBoundControlDesigner обеспечивает поддержку во время разработки для элементов управления, производных от HierarchicalDataBoundControl в узле конструктора.
Свойства HierarchicalDataBoundControlDesigner класса предоставляют следующие функциональные возможности:
Свойство ActionLists возвращает DesignerActionListCollection объект , который обычно содержит объект, производный от DesignerActionList класса для каждого уровня в дереве наследования конструктора.
Свойство DataSourceDesigner предоставляет доступ к конструктору источника данных, если он определен.
Свойство DesignerView получает представление по умолчанию для источника данных, привязанного к связанному элементу управления.
Свойство UseDataSourcePickerActionList определяет, должен ли элемент управления отображать списки действий по умолчанию для выбора и создания источников данных.
Методы HierarchicalDataBoundControlDesigner класса предоставляют следующие функциональные возможности:
Метод ConnectToDataSource выполняет действия, необходимые для подключения к текущему источнику данных.
Метод CreateDataSource создает новый источник данных для связанного элемента управления.
Метод DataBind привязывает связанный элемент управления, производный HierarchicalDataBoundControl от класса , к источнику данных времени разработки.
Метод DisconnectFromDataSource выполняет действия, необходимые для отключения от текущего источника данных.
Метод GetDesignTimeDataSource получает источник данных, который можно использовать во время разработки для связанного элемента управления.
Метод GetSampleDataSource создает пример источника данных, который можно использовать во время разработки для связанного элемента управления.
Метод PreFilterProperties используется для удаления свойств из или добавления дополнительных свойств в свойства связанного элемента управления, производного от HierarchicalDataBoundControl класса , или для теневых свойств.
Hierarchical |
Инициализирует новый экземпляр класса HierarchicalDataBoundControlDesigner. |
Action |
Получает коллекцию списков действий данного конструктора. |
Allow |
Получает значение, указывающее, можно ли изменять размер элемента управления в среде времени разработки. (Унаследовано от ControlDesigner) |
Associated |
Получает коллекцию компонентов, сопоставленных компоненту, который управляется конструктором. (Унаследовано от ComponentDesigner) |
Auto |
Получает коллекцию предварительно определенных схем автоматического форматирования, которые будут отображаться в диалоговом окне Автоформат для связанного элемента управления во время разработки. (Унаследовано от ControlDesigner) |
Behavior |
Устаревшие..
Получает или задает поведение DHTML, связанное с конструктором. (Унаследовано от HtmlControlDesigner) |
Component |
Возвращает основной компонент, создаваемый данным конструктором. (Унаследовано от ComponentDesigner) |
Data |
Получает коллекцию привязок данных для текущего элемента управления. (Унаследовано от HtmlControlDesigner) |
Data |
Получает значение, указывающее, поддерживается ли привязка данных областью, содержащей элемент управления. (Унаследовано от ControlDesigner) |
Data |
Получает или задает значение свойства DataSource для сопоставленного элемента управления. (Унаследовано от BaseDataBoundControlDesigner) |
Data |
Предоставляет доступ к конструктору источника данных, если таковой выбран для привязки данных. |
Data |
Получает или задает значение свойства DataSourceID базового объекта BaseDataBoundControl. (Унаследовано от BaseDataBoundControlDesigner) |
Designer |
Получает объект, используемый для сохранения данных сопоставленного элемента управления во время разработки. (Унаследовано от ControlDesigner) |
Designer |
Получает представление по умолчанию для источника данных, который привязан к сопоставленному элементу управления. |
Design |
Устаревшие..
Возвращает объект времени разработки, представляющий элемент управления, сопоставленный с объектом HtmlControlDesigner в области разработки. (Унаследовано от HtmlControlDesigner) |
Design |
Устаревшие..
Получает объект элемента управления представлением для конструктора элементов управления. (Унаследовано от ControlDesigner) |
Design |
Устаревшие..
Получает значение, указывающее, должна ли быть завершена загрузка основным приложением разработки до вызова метода GetDesignTimeHtml. (Унаследовано от ControlDesigner) |
Expressions |
Возвращает привязки выражений для текущего элемента управления во время разработки. (Унаследовано от HtmlControlDesigner) |
Hide |
Получает значение, указывающее, скрыты ли свойства сопоставленного элемента управления, когда он находится в режиме шаблона. (Унаследовано от ControlDesigner) |
ID |
Получает или задает строку идентификатора элемента управления. (Унаследовано от ControlDesigner) |
Inheritance |
Возвращает атрибут, обозначающий тип наследования связанного компонента. (Унаследовано от ComponentDesigner) |
Inherited |
Возвращает значение, определяющее, наследуется ли этот компонент или нет. (Унаследовано от ComponentDesigner) |
In |
получает значение, указывающее, находится ли элемент управления в режиме просмотра или редактирования шаблона в основном приложении разработки. Свойство InTemplateMode доступно только для чтения. (Унаследовано от ControlDesigner) |
Is |
Устаревшие..
Получает или задает значение, указывающее наличие отметки об изменении серверного веб-элемента управления. (Унаследовано от ControlDesigner) |
Parent |
Возвращает родительский компонент этого конструктора. (Унаследовано от ComponentDesigner) |
Read |
Устаревшие..
Получает или задает значение, указывающее, доступны ли только для чтения свойства элемента управления во время разработки. (Унаследовано от ControlDesigner) |
Root |
Получает конструктор элементов управления для страницы веб-форм, содержащей сопоставленный элемент управления. (Унаследовано от ControlDesigner) |
Set |
Предоставляет поддержку во время разработки в узле конструктора для элемента управления HierarchicalDataBoundControl. (Унаследовано от ComponentDesigner) |
Shadow |
Возвращает коллекцию значений свойств, переопределяющих параметры пользователя. (Унаследовано от ComponentDesigner) |
Should |
Устаревшие..
Получает или задает значение, показывающее, создавать ли объявление поля для элемента управления в файле кода программной части для текущего документа разработки во время сериализации. (Унаследовано от HtmlControlDesigner) |
Tag |
Получает объект, представляющей элемент разметки HTML для сопоставленного элемента управления. (Унаследовано от ControlDesigner) |
Template |
Получает коллекцию групп шаблонов, каждая из которых содержит одно или несколько определений шаблонов. (Унаследовано от ControlDesigner) |
Use |
Получает значение, указывающее, должен ли элемент управления выполнять рендеринг своих списков действий по умолчанию, в том числе раскрывающегося списка идентификаторов источников данных и связанных задач. |
Use |
Получает значение, указывающее, использует ли конструктор элементов управления временный элемент управления "Предварительный просмотр" для создания разметки HTML во время разработки. (Унаследовано от ControlDesigner) |
Verbs |
Возвращает команды в режиме конструктора, поддерживаемые компонентом, связанным с конструктором. (Унаследовано от ComponentDesigner) |
View |
Получает или задает серверный веб-элемент управления, который может быть использован для предварительного просмотра разметки HTML времени разработки. (Унаследовано от ControlDesigner) |
View |
Получает или задает значение, указывающее, создан ли элемент управления |
Visible |
Получает значение, указывающее, является ли элемент управления видимым во время разработки. (Унаследовано от ControlDesigner) |
Connect |
Выполняет действия, необходимые для подключения к текущему источнику данных. |
Create |
Создает новый источник данных для сопоставленного элемента управления. |
Create |
Создает разметку HTML для отображения указанного сообщения об ошибке во время разработки. (Унаследовано от ControlDesigner) |
Create |
Создает разметку HTML для отображения во время разработки указанного сообщения об ошибке, вызванной исключением. (Унаследовано от ControlDesigner) |
Create |
Предоставляет простое прямоугольное представление местозаполнителя, в котором выводится тип и идентификатор элемента управления. (Унаследовано от ControlDesigner) |
Create |
Предоставляет простое прямоугольное представление местозаполнителя, в котором выводится тип и идентификатор элемента управления, а также дополнительно указанные инструкции или сведения. (Унаследовано от ControlDesigner) |
Create |
Возвращает копию связанного элемента управления для просмотра или отрисовки в рабочей области конструирования. (Унаследовано от ControlDesigner) |
Data |
Привязывает связанный элемент управления к источнику данных времени разработки. |
Disconnect |
Выполняет действия, необходимые для отключения от текущего источника данных. |
Dispose() |
Освобождает все ресурсы, занятые модулем ComponentDesigner. (Унаследовано от ComponentDesigner) |
Dispose(Boolean) |
Освобождает неуправляемые (а при необходимости и управляемые) ресурсы, используемые объектом BaseDataBoundControlDesigner. (Унаследовано от BaseDataBoundControlDesigner) |
Do |
Создает в файле с исходным кодом подпись метода для события по умолчанию для компонента и устанавливает курсор в позицию, где была создана эта подпись. (Унаследовано от ComponentDesigner) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Get |
Получает координаты прямоугольника, представляющего границы элемента управления, когда он отображается в рабочей области конструирования. (Унаследовано от ControlDesigner) |
Get |
Получает источник данных, который может использоваться во время разработки для сопоставленного элемента управления. |
Get |
Создает разметку, используемую для обработки соответствующего элемента управления во время разработки. (Унаследовано от BaseDataBoundControlDesigner) |
Get |
Получает разметку HTML для отображения элемента управления и заполняет коллекцию текущими областями конструктора элемента управления. (Унаследовано от ControlDesigner) |
Get |
Возвращает содержимое редактируемой области представления времени разработки связанного элемента управления. (Унаследовано от ControlDesigner) |
Get |
Предоставляет разметку, используемую для визуализации элемента управления во время разработки, если этот элемент управления является пустым или не удается извлечь источник данных. (Унаследовано от BaseDataBoundControlDesigner) |
Get |
Предоставляет разметку, используемую для отрисовки элемента управления во время разработки, когда произошла ошибка. (Унаследовано от BaseDataBoundControlDesigner) |
Get |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
Get |
Получает сохраненную внутреннюю разметку HTML элемента управления во время разработки. (Унаследовано от ControlDesigner) |
Get |
Устаревшие..
Получает сохраненную внутреннюю разметку HTML элемента управления. (Унаследовано от ControlDesigner) |
Get |
Создает образец источника данных, который можно использовать во время разработки для связанного элемента управления. |
Get |
Пытается извлечь службу заданного типа с узла режима разработки компонента конструктора. (Унаследовано от ComponentDesigner) |
Get |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
Get |
Получает объект, содержащий разметку времени разработки для содержимого и областей сопоставленного элемента управления. (Унаследовано от ControlDesigner) |
Initialize(IComponent) |
Подготавливает конструктор для просмотра, редактирования и разработки связанного элемента управления. (Унаследовано от BaseDataBoundControlDesigner) |
Initialize |
Выполняет повторную инициализацию существующего компонента. (Унаследовано от ComponentDesigner) |
Initialize |
Инициализирует только что созданный компонент. (Унаследовано от ComponentDesigner) |
Initialize |
Устаревшие..
Устаревшие..
Инициализирует параметры импортированного компонента, параметры которого уже были инициализированы с использованием параметров, отличных от заданных по умолчанию. (Унаследовано от ComponentDesigner) |
Invalidate() |
Делает недействительной целую область элемента управления, отображаемого в рабочей области конструирования, и сигнализирует конструктору элементов управления о необходимости перерисовки элемента управления. (Унаследовано от ControlDesigner) |
Invalidate(Rectangle) |
Делает недействительной указанную область элемента управления, отображаемого в рабочей области конструирования, и сигнализирует конструктору элемента управления о необходимости перерисовки элемента управления. (Унаследовано от ControlDesigner) |
Invoke |
Возвращает атрибут InheritanceAttribute заданного объекта ComponentDesigner. (Унаследовано от ComponentDesigner) |
Is |
Устаревшие..
Получает значение, указывающее, является ли указанное свойство сопоставленного элемента управления привязанным к данным. (Унаследовано от ControlDesigner) |
Localize(IDesign |
Использует предоставленный модуль записи ресурсов для сохранения локализуемых свойств сопоставленного элемента управления в ресурсе основного приложения разработки. (Унаследовано от ControlDesigner) |
Memberwise |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
On |
Вызывается, когда предварительно определенная схема автоматического форматирования применяется к сопоставленному элементу управления. (Унаследовано от ControlDesigner) |
On |
Вызывается, когда конструктор элемента управления вложен в объект Behavior. (Унаследовано от ControlDesigner) |
On |
Устаревшие..
Вызывается при разрыве связи поведения и элемента. (Унаследовано от HtmlControlDesigner) |
On |
Устаревшие..
Вызывается при изменении коллекции привязки данных. (Унаследовано от ControlDesigner) |
On |
Вызывается основным приложением разработки, когда пользователь во время разработки щелкает сопоставленный элемент управления. (Унаследовано от ControlDesigner) |
On |
Вызывается при изменении сопоставленного элемента управления. (Унаследовано от ControlDesigner) |
On |
Предоставляет метод, обрабатывающий событие ComponentChanging для сопоставленного элемента управления. (Унаследовано от ControlDesigner) |
On |
Устаревшие..
Вызывается, когда изменяется размер сопоставленного серверного веб-элемента управления в основном приложении разработки во время разработки. (Унаследовано от ControlDesigner) |
On |
Вызывается при изменении источника данных сопоставленного объекта BaseDataBoundControl. (Унаследовано от BaseDataBoundControlDesigner) |
On |
Вызывается, когда конструктор элементов управления прорисовывает сопоставленный элемент управления в рабочей области конструирования, если значением поля CustomPaint является |
On |
Вызывается при загрузке новой схемы в источник данных сопоставленного объекта BaseDataBoundControl. (Унаследовано от BaseDataBoundControlDesigner) |
On |
Устаревшие..
Устаревшие..
Задает для компонента свойства по умолчанию. (Унаследовано от ComponentDesigner) |
On |
Предоставляет способ выполнения дополнительной обработки, когда сопоставленный элемент управления сопоставляется с родительским элементом управления. (Унаследовано от HtmlControlDesigner) |
Post |
Позволяет конструктору изменять или удалять элементы из набора атрибутов, предоставленных через класс TypeDescriptor. (Унаследовано от ComponentDesigner) |
Post |
Позволяет конструктору изменять или удалять элементы из набора событий, предоставленных через класс TypeDescriptor. (Унаследовано от ComponentDesigner) |
Post |
Позволяет конструктору изменять или удалять элементы из набора свойств, предоставленных с использованием класса TypeDescriptor. (Унаследовано от ComponentDesigner) |
Pre |
Позволяет конструктору добавлять элементы к набору атрибутов, предоставленному с использованием класса TypeDescriptor. (Унаследовано от ComponentDesigner) |
Pre |
Определяет список событий, предоставляемых во время разработки для объекта TypeDescriptor компонента. (Унаследовано от HtmlControlDesigner) |
Pre |
Используется в конструкторе для добавления дополнительных свойств в сетку Свойства или удаления их оттуда, а также для затемнения свойств связанного элемента управления. |
Raise |
Уведомляет службу IComponentChangeService о том, что данный компонент был изменен. (Унаследовано от ComponentDesigner) |
Raise |
Уведомляет службу IComponentChangeService о том, что компонент будет изменен. (Унаследовано от ComponentDesigner) |
Raise |
Устаревшие..
Вызывает событие OnControlResize(). (Унаследовано от ControlDesigner) |
Register |
Регистрирует внутренние данные в клонированном элементе управления. (Унаследовано от ControlDesigner) |
Set |
Указывает содержимое редактируемой области элемента управления во время разработки. (Унаследовано от ControlDesigner) |
Set |
Указывает содержимое редактируемой области в представлении времени разработки элемента управления. (Унаследовано от ControlDesigner) |
Set |
Назначает указанное битовое перечисление ViewFlags указанному значению флага. (Унаследовано от ControlDesigner) |
To |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Update |
Обновляет разметку HTML времени разработки для сопоставленного серверного веб-элемента управления посредством вызова метода GetDesignTimeHtml. (Унаследовано от ControlDesigner) |
Өнім | Нұсқалар |
---|---|
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET кері байланысы
.NET — бастапқы коды ашық жоба. Пікір қалдыру үшін сілтемені таңдаңыз: