๐ ToolTip ์ปจํธ๋กค
ToolTip ์ปจํธ๋กค์ Form์ ToolTip ์ปจํธ๋กค์ ์ถ๊ฐํ์ ๋,
๋ค๋ฅธ ์ปจํธ๋กค๋ค์ ๊ณตํต์ ์ผ๋ก tooltip1์ ToolTip ์ด๋ผ๋ ํ๋กํผํฐ๊ฐ ์๊ธด๋ค.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
๐บForm์ ToolTip ์ปจํธ๋กค์ ์ถ๊ฐํ์ ๋ Button์ ์์ฑ์ toolTip1์ ToolTip์ด๋ผ๋ ํ๋กํผํฐ๊ฐ ์๊ธด ๊ฒ์ ๋ณผ ์ ์๋ค.
ToolTip ํด๋์ค๋ Component ํด๋์ค์ IExtenderProvider ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๊ณ ์๋๋ฐ ์ฌ๊ธฐ์ ํ๋กํผํฐ ํ์ฅ์ ํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์ธ IExtenderProvider ์ธํฐํ์ด์ค๋ฅผ ์ดํด๋ณผ ๊ฒ์ด๋ค.
๐ IExtenderProvider Interface
- ์ ์
์์ฑ์ ์ปจํ ์ด๋์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ก ํ์ฅํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ค.
- Method
bool CanExtend(object target)
Method์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ์ฌ๋์ด ์๋ค.
bool CanExtend(object) ๋ฉ์๋ ํ๋๋ง ์์ผ๋ฉฐ, ์ด ๋ฉ์๋๋ ์ง์ ๋ ๊ฐ์ฒด์ ๋ํด ํ์ฅ ์์ฑ์ ์ ๊ณต ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. ์ด ๊ฐ์ฒด๊ฐ ์ง์ ๋ ๊ฐ์ฒด์ Extender ์์ฑ์ ์ ๊ณตํ ์ ์์ผ๋ฉด true์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false์ ๋๋ค.
์ฌ๊ธฐ์ ์ง์ ๋ ๊ฐ์ฒด๋ IExtenderProvider ๋ฅผ ์์๋ฐ๋ ํด๋์ค์ ProvideProperty ๋ผ๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ ์ง์ ๋ Type์ ๋งํ๋ค.
[ProvideProperty("MyLabel", typeof(Control))] // ์ง์ ๋ ๊ฐ์ฒด๋ Control
public class LabelExtender : Control, IExtenderProvider
{
...
}
CanExtend() ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค.
bool IExtenderProvider.CanExtend(object target)
{
if (target is Control && !(target is ToolTip))
{
return true;
}
return false;
}
๐ IExtenderProvider Interface ์์๋ฐ์ ๊ตฌํํ๊ธฐ
IExtenderProvider๋ฅผ ์์๋ฐ์ ํด๋์ค๋ ๋ฐ๋์ ๋๊ฐ์ public ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผํ๋ค.
codeproject.com ์ฌ์ดํธ ๊ธ ์ฐธ๊ณ
https://www.codeproject.com/Articles/4683/Getting-to-know-IExtenderProvider
์์ฑ์ ์ถ๊ฐํ๋ฉด ๋ ๊ฐ์ ๊ณต๊ฐ ๋ฉ์๋๋ฅผ ์จ์ผ ํ๋ฉฐ ์ด๋ฌํ ๋ฉ์๋๋ ์ผ๋ฐ ์์ฑ์ ๊ฐ์ ธ์ค๊ธฐ/์ค์ ๋ถ๋ถ์ผ๋ก ์๋ํ๋ฉฐ Get<Name> ๋ฐ Set<Name>์ด๋ผ๋ ์ด๋ฆ์ด ์ง์ ๋ฉ๋๋ค.
Get<Name> ๋ฉ์๋๋ ProviderProperty ์์ฑ์ด ์ ์ํ๋ ์ ํ์ ๊ฐ์ ธ์์ ์์ฑ์ ๋ฐ์ดํฐ ์ ํ์ ๋ฐํํฉ๋๋ค.
Set<Name> ๋ฉ์๋๋ ๋ ๊ฐ์ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ Provider Property ์์ฑ์ ์ง์ ๋ ํ์์ด๊ณ , ๋ ๋ฒ์งธ๋ Get<Name> ๋ฐํ๊ณผ ๋์ผํ ๋ฐ์ดํฐ ํ์์ ๋๋ค. ์ด ๊ฐ์ ์ฌ์ฉ์๊ฐ ์์ฑ์ ์ค์ ํ๊ณ ์ ํ๋ ๊ฐ์ ๋๋ค.
Get, Set ๋ฉ์๋๋ฅผ ์์ฑํด์ค์ผํ๋๋ฐ ์ฌ๊ธฐ์ <Name>์ ์์ ์ธ๊ธํ ProvideProperty ์ ํธ๋ฆฌ๋ทฐํธ์ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ proertyName ๊ณผ ๋์ผํ๊ฒ ํด์ผํ๋ค.
์๋ ์์ค์ฝ๋ ์ฐธ๊ณ
[ProvideProperty("MyLabel", typeof(Control))]
public class LabelExtender : Control, IExtenderProvider
{
//
// ...
//
bool IExtenderProvider.CanExtend(object target)
{
if (target is Control && !(target is LabelExtender))
{
return true;
}
return false;
}
public string GetMyLabel(Control control)
{
string text = (string)hashText[control];
text = text ?? string.Empty;
return text;
}
public void SetMyLabel(Control control, string value)
{
value = value ?? string.Empty;
if (value.Length == 0)
{
hashText.Remove(control);
}
else
{
hashText[control] = value;
}
}
}
MSDN์ IExtenderProvider Interface ํ์ด์ง์ ๋์์๋ ์์ ์์ค๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ๋์ํด๋ด๋ ํ์ธ์ด ๊ฐ๋ฅํ์ง๋ง
์๋ฆฌ๋ฅผ ์ดํดํ๋ฉด์ ์ง์ ๊ตฌํํด๋ณด๊ณ ์ถ์ด์ ์ฌ๋ฌ ์ฌ์ดํธ๋ฅผ ์ฐธ์กฐํด์ ํ์ฅ์ปจํธ๋กค์ ๊ตฌํํด๋ดค๋ค.
์ ์ฒด ์์ค
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace IExtenderProviderDemo
{
[ProvideProperty("MyLabel", typeof(Control))]
public class LabelExtender : Control, IExtenderProvider
{
private Container components;
private Hashtable hashText;
public LabelExtender()
{
InitializeComponent();
hashText = new Hashtable();
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.BackColor = System.Drawing.SystemColors.Info;
this.components = new Container();
this.ForeColor = System.Drawing.SystemColors.InfoText;
this.TabStop = false;
}
bool IExtenderProvider.CanExtend(object extendee)
{
if (extendee is Control &&
!(extendee is LabelExtender))
{
return true;
}
return false;
}
public string GetMyLabel(Control control)
{
string text = (string)hashText[control];
text = text ?? string.Empty;
return text;
}
public void SetMyLabel(Control control, string value)
{
value = value ?? string.Empty;
if (value.Length == 0)
{
hashText.Remove(control);
}
else
{
hashText[control] = value;
}
}
}
}
'์ธ์ด > C#. JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#] ์ปฌ๋ ์ / ์ผ๋ฐํ ์ปฌ๋ ์ (Collection / Generic Collection) (0) | 2021.04.06 |
---|---|
[.NET] ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ (Serialize, Deserialize) (0) | 2021.04.06 |
[JAVA] StringTokenizer ์ฌ์ฉ๋ฒ (0) | 2021.01.05 |
[C# ์คํฐ๋ - Day1] DBHelper ์์ฑํ๊ธฐ (0) | 2020.12.24 |
[C#] txt ํ์ผ์ ๋ก๊ทธ ๊ธฐ๋กํ๊ธฐ (StreamWriter ๋ฉ์๋) (0) | 2020.12.18 |