public class Time
{
//Denne klassen kan du test som følger fra et annet sted..
//private void simpleButton2_Click(object sender, EventArgs e)
//{
// Time t = new Time();
// t.TimeHasChanged += t_TimeHasChanged;
// t.ChangeTime();
//}
//void t_TimeHasChanged(object sender, TimeHasChangedEventArgs e)
//{
// MessageBox.Show(e.SomeProperty);
//}
//Delegaten
public delegate void TimeHasChangedEventHandler(object sender, TimeHasChangedEventArgs e);
//Eventet
public event TimeHasChangedEventHandler TimeHasChanged;
// Metoden man benytter for å raise eventet
protected virtual void OnTimeHasChanged(TimeHasChangedEventArgs e)
{
if (TimeHasChanged!=null)
{
//Invoke delegates
TimeHasChanged(this, e);
}
}
//En testmetode for å kunne raise eventet.
//Vanligvis vil man raise eventet på de stedene man måtte ønske
public void ChangeTime()
{
this.OnTimeHasChanged(new TimeHasChangedEventArgs() { SomeProperty = "Dette er en test" });
}
}
//EventArgs klassen. Denne vil du normalt utstyre med de properties som du har behov for.
//Dersom du ikke har behov for å sende spesielle data rundt omkring så kan du bruke EventArgs direkte
//og ikke gå via en egen klasse som arver EventArgs
public class TimeHasChangedEventArgs : EventArgs
{
public string SomeProperty { get; set; }
}
Raise Events
Posted in C#
Leave a comment
Ta tiden på noe
//Start tid DateTime startTime = DateTime.Now; //Gjør noe Thread.Sleep(2000); //Stopp tid DateTime stopTime = DateTime.Now; //Hvor lang tid tok det. TimeSpan duration = stopTime - startTime; MessageBox.Show(duration.ToString());
Posted in C#
Leave a comment
C# Operators
Null-coalescing (??)
// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;
Conditional operator (?:)
condition ? first_expression : second_expression;
Posted in C#
Leave a comment
Debugger
List li = new List();
li.Add(new Person { FirstName = "Jeroen", LastName = "Schiøtt" });
li.Add(new Person { FirstName = "Ronny", LastName = "Gydar" });
//Vha denne attributten får vi pen informasjon i debugger.
[System.Diagnostics.DebuggerDisplay("{FirstName} {LastName}")]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Posted in C#, Visual Studio
Leave a comment
List (sortering og where)
[System.Diagnostics.DebuggerDisplay("{FirstName} {LastName} {Age}")]
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public static void Sortering()
{
//Koden for å sortere
List<Person> Personer = new List<Person>();
Personer.Add(new Person { FirstName = "Abel", LastName = "Smith", Age = 34 });
Personer.Add(new Person { FirstName = "Tony", LastName = "Andersen", Age = 30 });
Personer.Add(new Person { FirstName = "Chris", LastName = "Kub", Age = 10 });
//Sorterer på FirstName
List<Person> sortedList = Personer.OrderBy(x => x.FirstName).ToList();
//Sorterer på LastName
List<Person> sortedList2 = Personer.OrderBy(x => x.LastName).ToList();
//Sorterer på Age
List<Person> sortedList3 = Personer.OrderBy(x => x.Age).ToList();
//Sorterer på Age også på LastName
List<Person> sortedList4 = Personer.OrderBy(x => x.Age).ThenBy(x => x.LastName).ToList();
//Legg merke til at både OrderBy og ThenBy har respektive Descending metoder.
List<Person> sortedList5 = Personer.OrderByDescending(x => x.Age).ThenByDescending(x => x.LastName).ToList();
}
public static void UseOfWhere()
{
List<Person> Personer = new List<Person>();
Personer.Add(new Person { FirstName = "Abel", LastName = "Smith", Age = 34 });
Personer.Add(new Person { FirstName = "Tony", LastName = "Andersen", Age = 30 });
Personer.Add(new Person { FirstName = "Chris", LastName = "Kub", Age = 10 });
List<Person> Under30 = Personer.Where(x => x.Age < 30).ToList();
//Bruk av funksjon..
List<Person> someitems = Personer.Where(new Func<Person, bool>(t =>
{
//Utav new Func<Person, bool>(t => kan vi lese
//Dette er en funksjon som får inn Person i variabelen t
//Funksjonen skal returnere en bool.
//Vi kan så skrive ordinær kode her..
if (t.Age==30) return true;
return false;
}
)).ToList();
//Vi kan også skrive dette litt enklere..
List<Person> someitems2 = Personer.Where(t =>
{
//Vi kan så skrive ordinær kode her..
if (t.Age == 30) return true;
return false;
}
).ToList();
}
}
Posted in C#, Linq
Leave a comment
Kul bruk av var
System.Data.DataTable dt = new DataTable();
dt.Columns.Add("Name");
System.Data.DataRow r = dt.NewRow();
r["Name"] = "d";
dt.Rows.Add(r);
var anon = new { Name = System.Convert.ToString( dt.Rows[0]["Name"]), Age = 34 };
//anon.Name = "Jeroen"; //Readonly. Dette funker ikke.
//List<anon> l = new List<anon>(); //Dette funker heller ikke.
//Dette funker og man har intellicence.
MessageBox.Show(anon.Name);
Posted in Uncategorized
Leave a comment
Winzip from C#
Bruk:
using (ZipFile zip = new ZipFile())
{
//Passord må settes FØR selve filen legges inn.
//Det virker som om man setter et passord pr fil i zip filen.
zip.Password = "p";
zip.AddFile("c:\\temp3\\data.txt","");
zip.Save("c:\\temp3\\ZipByCode.zip");
}
Posted in C#
Leave a comment
Visual Studio 2008 Snippets
Last ned en editor : http://snippeteditor.codeplex.com/
Dersom du skal redigere eksisterende snippets og kjører windows 7, start programmet som administrator, ellers får du problemer med skriverettigheter.
Dersom du skal lagre egne snippets så lagrer du disse i mappen:
[My documents]\visual studio 2008\code snippets\visual c#\my code snippets
De må lagres med extension .snippet
Posted in Visual Studio
Leave a comment
C# Mod eksempel
//Gi brukeren en melding for hver 50 rad.
for (int i = 0; i < 500; i++)
{
//The modulus operator (%) computes the remainder after
//dividing its first operand by its second.
if (i%50==0)
{
this.Text="Antall rader = " + i.ToString();
}
}
//Brukt i forbindelse med en datatable.
Int32 NrOfRows = this.MyDataTable.Rows.Count;
Int32 RowCounter = 0;
foreach (DataRow MyRow in this.MyDataTable.Rows)
{
RowCounter += 1;
//Viser melding for rad 1 også for hver 20 rad og til slutt for den siste raden.
if (RowCounter % 20 == 0 || RowCounter == NrOfRows || RowCounter==1)
{
//Skriver en status melding.
this.Text = "Rader overført : " + RowCounter.ToString();
}
}
Posted in C#
Leave a comment

