An extender provider - компонент, который предоставляет свойства другим компонентам. Это делается с целью расширения множества свойств (элементов управления).
ToolTipProvider,
HelpProvider,
ErrorProvider.
Например, когда a ToolTip Component (Windows Forms) компонент добавляется к форме, все остальные компоненты, размещённые на этой форме, получают новое свойство, которое даже можно просматривать и устанавливать (редактировать) в окне Properties непосредственно в процессе разработки формы. И это новое свойство, называемое ToolTip, вызывается для каждого элемента управления данной формы.
Не надо обольщаться. Множество свойств элементов управления не изменилось. Дополнительное свойство предоставляется ВСЕМ элементам отдельным компонентом.
На этапе разработки, это свойство появляется в Properties window for the component that is being modified.
Однако при выполнении (at run time), это свойство не может быть доступно (accessed) непосредственно через данный конкретный элемент управления.
В следующем примере кода форма была построена с кнопочкой, которая была названа MyButton и элементол управления ToolTip, названным MyToolTip, which provides a ToolTip property.
// И вот так просто и наивно значение свойства кнопочки не получить,
// поскольку это свойство не родное!
// This is an example of code that is NOT CORRECT!
string myString;
myString = MyButton.ToolTip;
Подобное обращение пиведёт к ошибке ещё на стадии компиляции. А вот как надо обращаться к этому самому дополнительному свойству, установленному для кнопочки (просто форменное надувательство):
string myString;
myString = MyToolTip.GetToolTip(MyButton);
Провайдеры дополнительных свойств являются классами, а это означает, что у них имеются собственные свойства и методы.
Пример…
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Rolls01
{
/// <summary>
/// Summary description for numPointsForm.
/// </summary>
public class numPointsForm : System.Windows.Forms.Form