Hallo zusammen,
hat vielleicht jemand eine gute Seite, wo ich nachlesen kann, wie ich am besten ein eigenes Usercontrol schreiben kann?
Bin gerade dabei eins zu schreiben. Es soll eins so ähnlich wie Kalender sein.
Komme aber da nicht so richtig weiter und habe bisher nichts gefunden wie ich da am besten ran gehen kann.
Hier ist so mein ansatz:
namespace Visuelle_Projektplanung
{
public class Kalender : DataGridView
{
private int k_jahr, k_viertel;
private string k_blockFarbe,k_toggleFarbe, k_cellWidth, k_cellHight, k_blankGifPath;
string[] k_namen;
int k_KeineTage;
public Kalender()
{
k_namen = new string[3];
}
#region Public Proberties
//gets sets aus der Tabelle???
[Bindable(true), Category(), DefaultValue(1)]
public int Viertel
{
get
{
return k_viertel;
}
set
{
k_viertel = value;
}
}
[Bindable(true), Category(), DefaultValue("")]
public int Jahr
{
get
{
return k_jahr;
}
set
{
k_jahr = value;
}
}
[Bindable(true), Category(), DefaultValue("Rot")]
public string BlockFarbe
{
get
{
return k_blockFarbe;
}
set
{
k_blockFarbe = value;
}
}
[Bindable(true), Category(), DefaultValue("15")]
public int CellWidth
{
get
{
return int.Parse(k_cellWidth);
}
set
{
k_cellWidth = value.ToString();
}
}
[Bindable(true), Category(), DefaultValue("15")]
public int CellHeight
{
get
{
return int.Parse(k_cellHight);
}
set
{
k_cellHight = value.ToString();
}
}
[Bindable(true), Category(), DefaultValue("#dcdcdc")]
public string ToggleFarbe
{
get
{
return k_toggleFarbe;
}
set
{
k_toggleFarbe = value;
}
}
[Bindable(true), Category(), DefaultValue("#dcdcdc")]
public string BlankGifPath
{
get
{
return k_blankGifPath;
}
set
{
k_blankGifPath = value;
}
}
#endregion
#region Hilfs Funktionen
private void RechteSeite()
{
int monat;
string wochentag;
bool woche = false;
ViertelHelfer viertel = new ViertelHelfer(2006, 2);
DataGridView dgv = new DataGridView();
for (int i = 1; i < 3; i++)
{
monat = i + (3 * (viertel.ViertelIndex - 1));
//Kalender.Columns.Add(viertel.AlleTageImMonat(monat).ToString(),typeof(string));
//gridView.Columns.Add(viertel.AlleTageImMonat(monat).ToString());
foreach(char zahl in viertel.AlleTageImMonat(monat).ToString())
{
dgv.Columns.Add("TagesZahl", zahl.ToString());
}
//col. (viertel.AlleTageImMonat(monat).ToString());
}
for (int i = (3 * viertel.ViertelIndex - 2); i <= (3 * viertel.ViertelIndex); i++)
{
for (int j = 1; j <= viertel.AlleTageImMonat(i); j++)
{
wochentag = viertel.getTageName(i, j);
if (wochentag == "Mo")
{
woche = !woche;
}
}
}
}
#endregion
#region ViertelHelfer
private class ViertelHelfer
{
private int k_jahr;
private int k_viertel;
private string[] k_namen = new string[3];
private int k_KeineTage;
public ViertelHelfer()
{
}
public ViertelHelfer(int jahr, int viertel)
{
k_jahr = jahr;
k_viertel = viertel;
k_namen = getViertelName();
k_KeineTage = getTageImViertel(k_jahr, k_viertel);
}
public int Jahr
{
get
{
return k_jahr;
}
}
public int ViertelIndex
{
get
{
return k_viertel;
}
}
public string[] Namen
{
get
{
return k_namen;
}
}
public int Tage
{
get
{
return k_KeineTage;
}
}
public string GetMonatsName(int i)
{
return k_namen[i - 1];
}
public int AlleTage()
{
int ReturnValue = 0;
switch (k_viertel)
{
case 1:
ReturnValue = DateTime.DaysInMonth(k_jahr, 1);
ReturnValue += DateTime.DaysInMonth(k_jahr, 2);
ReturnValue += DateTime.DaysInMonth(k_jahr, 3);
break;
case 2:
ReturnValue = DateTime.DaysInMonth(k_jahr, 4);
ReturnValue += DateTime.DaysInMonth(k_jahr, 5);
ReturnValue += DateTime.DaysInMonth(k_jahr, 6);
break;
case 3:
ReturnValue = DateTime.DaysInMonth(k_jahr, 7);
ReturnValue += DateTime.DaysInMonth(k_jahr, 8);
ReturnValue += DateTime.DaysInMonth(k_jahr, 9);
break;
case 4:
ReturnValue = DateTime.DaysInMonth(k_jahr, 10);
ReturnValue += DateTime.DaysInMonth(k_jahr, 11);
ReturnValue += DateTime.DaysInMonth(k_jahr, 12);
break;
}
return ReturnValue;
}
public int AlleTageImMonat(int i)
{
return DateTime.DaysInMonth(k_jahr,i);
}
public string getTageName(int monat, int tag)
{
string ReturnValue = string.Empty;
DateTime t = new DateTime(k_jahr, monat, tag);
switch (t.DayOfWeek)
{
case
DayOfWeek.Monday: ReturnValue = "Mo";
break;
case
DayOfWeek.Tuesday: ReturnValue = "Di";
break;
case
DayOfWeek.Wednesday: ReturnValue = "Mi";
break;
case
DayOfWeek.Thursday: ReturnValue = "Do";
break;
case
DayOfWeek.Friday: ReturnValue = "Fr";
break;
case
DayOfWeek.Saturday: ReturnValue = "Sa";
break;
case
DayOfWeek.Sunday: ReturnValue = "So";
break;
}
return ReturnValue;
}
private string[] getViertelName()
{
string[] ReturnValue = new string[3];
switch (k_viertel)
{
case 1:
ReturnValue[0] = "Januar";
ReturnValue[1] = "Februar";
ReturnValue[2] = "März";
break;
case 2:
ReturnValue[0] = "April";
ReturnValue[1] = "Mai";
ReturnValue[2] = "Juni";
break;
case 3:
ReturnValue[0] = "Juli";
ReturnValue[1] = "August";
ReturnValue[2] = "September";
break;
case 4:
ReturnValue[0] = "Oktober";
ReturnValue[1] = "November";
ReturnValue[2] = "Dezember";
break;
}
return ReturnValue;
}
private int getTageImViertel(int jahr, int viertel)
{
DateTime dtStart, dtEnde;
if (viertel < 4)
{
dtStart = new DateTime(jahr, (3 * viertel - 2), 1);
dtEnde = new DateTime(jahr, (3 * viertel - 2) + 3, 1);
}
else
{
dtStart = new DateTime(jahr, (3 * viertel - 2), 1);
dtEnde = new DateTime(jahr + 1, 1, 1);
}
TimeSpan ts = new TimeSpan(dtEnde.Subtract(dtStart).Ticks);
return ts.Days;
}
public int getSpaltenIndex(string tag)
{
DateTime dt = DateTime.Parse(tag);
int offset = 0;
int ReturnValue = 0;
for (int i = 1; i < k_viertel; i++)
{
offset += getTageImViertel(k_jahr, i);
}
ReturnValue = (dt.DayOfYear - 1) - offset;
if (ReturnValue < 0)
{
ReturnValue = 0;
}
if (ReturnValue > getTageImViertel(k_jahr, k_viertel))
{
ReturnValue = getTageImViertel(k_jahr, k_viertel);
}
return ReturnValue;
}
}
#endregion
}
Wie gesagt komme da nicht so richtig weiter. Habe auch irgendwo was gelesen, dass ich diese Klasse dann als .dll einbinden muss. Sehe ich das richtig?
Wäre echt klasse wenn mir einer eine gute Seite sagen kann, wo es erklärt ist, wie meine eigene UserControll anfertigt und einbindet.
Danke im voraus.
Gruß