C# WPF
Képek kezelése
grid x:Name="LayoutRoot" UseLayoutRounding="True"
WPF Stílusok (WPF Styles)
Office 2010 gomb:
<!-- Office2010 ButtonStyle -->
<style x:key="ShadowStyle">
<Setter Property="Control.Foreground" Value="LightGray" />
</style>
<style x:key="Office2010Button" targettype="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#FFDEDFE0" Offset="0"/>
<GradientStop Color="#FFA1A2A4" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Button.Effect">
<Setter.Value>
<DropShadowEffect Color="#A1000000" Direction="300" ShadowDepth="1" BlurRadius="3" Opacity="0.2" />
</Setter.Value>
</Setter>
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#FFFFFFFF" Offset="0"/>
<GradientStop Color="#FFEDEFF1" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="1"
Padding="2"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="2"
Background="{TemplateBinding Background}">
<Grid >
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" Name="contentShadow"
Style="{StaticResource ShadowStyle}">
<ContentPresenter.RenderTransform>
<TranslateTransform X="1.0" Y="1.0" />
</ContentPresenter.RenderTransform>
</ContentPresenter>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" Name="content"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FFF0C857" />
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#FFFCF0BC" Offset="0"/>
<GradientStop Color="#FFFCE285" Offset="0.50"/>
<GradientStop Color="#FFFDF8C8" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FFC28A30" />
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#FFFFE575" Offset="0"/>
<GradientStop Color="#FFFFD86B" Offset="0.50"/>
<GradientStop Color="#FFFFEF81" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter TargetName="content" Property="RenderTransform" >
<Setter.Value>
<TranslateTransform Y="1.0" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsDefaulted" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#FF0094FF" />
</Trigger>
<Trigger Property="IsFocused" Value="True"></Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="border" Property="Opacity" Value="0.7" />
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</style>
Vista / Win7 parancsgomb:
<!-- Vista style Command Button -->
<style x:key="ShadowStyle">
<Setter Property="Control.Foreground" Value="LightGray" />
</style>
<style x:key="VistaCommandButton" targettype="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="Button.Effect">
<Setter.Value>
<DropShadowEffect Color="#A1000000" Direction="300" ShadowDepth="1" BlurRadius="3" Opacity="0.2" />
</Setter.Value>
</Setter>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="1"
Padding="2"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="2"
Background="{TemplateBinding Background}">
<Grid >
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" Name="contentShadow"
Style="{StaticResource ShadowStyle}">
<ContentPresenter.RenderTransform>
<TranslateTransform X="1.0" Y="1.0" />
</ContentPresenter.RenderTransform>
</ContentPresenter>
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" Name="content"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#4E000000" />
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#78FAFAFA" Offset="0.0"/>
<GradientStop Color="#31C5C5C5" Offset="0.30" />
<GradientStop Color="#286D6D6D" Offset="0.30" />
<GradientStop Color="#28727272" Offset="0.45" />
<GradientStop Color="#12F0F0F0" Offset="1.0" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#7C000000" />
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
<GradientStop Color="#53313131" Offset="0.02" />
<GradientStop Color="#1B000000" Offset="0.06" />
<GradientStop Color="#0D000000" Offset="0.45" />
<GradientStop Color="#0B000000" Offset="1.0" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter TargetName="content" Property="RenderTransform" >
<Setter.Value>
<TranslateTransform Y="1.0" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsDefaulted" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="#4E000000" />
</Trigger>
<Trigger Property="IsFocused" Value="True"></Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="border" Property="Opacity" Value="0.7" />
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</style>
Program Futtatása
System.Diagnostics.Process.Start("c:\\Windows\\regedit.exe");
Ha a fájl nem található (védelem)…
const int ERROR_FILE_NOT_FOUND = 2;
try
{
System.Diagnostics.Process.Start("c:\\myapp.exe");
}
catch (Win32Exception h)
{
if (h.NativeErrorCode == ERROR_FILE_NOT_FOUND)
{
MessageBox.Show("c:\\myapp.exe", "A Fájl Nem Található!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Folyamat leállítása
Process[] prs = Process.GetProcesses();
foreach (Process pr in prs)
{
if (pr.ProcessName == "ffmpeg")//Folyamat neve...
{
pr.Kill();
MessageBox.Show("Folyamat leállítva!", "Figyelem", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
Registry Írás
//String:
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Names");
key.SetValue("Name", "Isabella");
key.Close();
//Dword:
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("SOFTWARE\\techPowerUp\\GPU-Z");
key.SetValue("Interval", 0x00003);
key.Close();
Registry Törlés
string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
if (key == null)
{
// Key doesn't exist. Do whatever you want to handle
// this case
}
else
{
key.DeleteValue("MyApp");
}
}
//Vagy egész kulcs
RegistryKey registrykeyHKLM = Registry.LocalMachine;
string keyPath = @"Software\Microsoft\Windows\CurrentVersion\Run\MyApp";
registrykeyHKLM.DeleteValue(keyPath);
registrykeyHKLM.Close();
string-ről int-re és int-ről string-re
//string to int
int x = Int.Parse("23");
//int to string
int var1 = 2;
string var2 = var1.ToString;
Sortörés és macskaköröm
//Sortörés
\n
//Macskaköröm
"\""
Elérési útvonalak
//Temp mappa
string temp = Path.GetTempPath();
//Windows mappa
string windir = Environment.GetEnvironmentVariable("WINDIR");
//Program Files mappa
string programfiles = Environment.GetEnvironmentVariable("PROGRAMFILES");
//Felhasználói könyvtár
string users = Environment.GetEnvironmentVariable("USERPROFILE");
//Asztal
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//Program gyökérmappája
string rootpath = Path.GetDirectoryName(Application.ExecutablePath);
Átlátszó lapos gomb (kép is elhelyezhető)
button1.TabStop = false;
button1.FlatStyle = FlatStyle.Flat;
button1.FlatAppearance.BorderSize = 0;
button1.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //Transparent
Ablak (form) Bezárása
Close();
Másolandó Fájl nem létezik akkor…
FileInfo updatefiles = new FileInfo("C:\\Zipp\\akarmi.zip");
if (File.Exists("updatefiles.ToString()))
{
updatefiles.CopyTo("C:\\File\\akarmi.zip", true);
}
else
{
MessageBox.Show("C:\\Zipp\\akarmi.zip Nem Található!");
}
Szöveges Fájl Létrehozása
using (StreamWriter sw = new StreamWriter("TestFile.txt"))
{
// Add some text to the file.
sw.Write("This is the ");
sw.WriteLine("header for the file.");
sw.WriteLine("-------------------");
// Arbitrary objects can also be written to the file.
sw.Write("The date is: ");
sw.WriteLine(DateTime.Now);
sw.Close();
}
Asztal Frissítése
[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
private void button1_Click(object sender, EventArgs e)
{
SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);
}
Kép konvertálása
using System.Drawing.Imaging;
using(Image img = Image.FromFile("c:\\jpegimage.jpg"))
{
img.Save("C:\\bmpimage.bmp", ImageFormat.Bmp);
//PNG mentés:
img.Save(@"C:\newfile.png", ImageFormat.Png);
}
Egyszerű nyomtatás
//elhelyezkedések//
float x = 75.0F;
float y = 510.0F;
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
Font drawFont = textBox1.Font;
SolidBrush drawBrush = new SolidBrush(textBox1.ForeColor);
e.Graphics.DrawString(textBox1.Text, drawFont, drawBrush, x, y);
}
private void button3_Click(object sender, EventArgs e)
{
DialogResult result = printDialog1.ShowDialog();
// If the result is OK then print the document.
if (result == DialogResult.OK)
{
printDocument1.Print();
}
}
Parancsikon készítése
using IWshRuntimeLibrary;
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);//Asztal
WshShell = new WshShellClass();
IWshRuntimeLibrary.IWshShortcut MyShortcut;
// Helye a para ikonak "Hova kerüljön"
MyShortcut = (IWshRuntimeLibrary.IWshShortcut)WshShell.CreateShortcut(desktop + @"\Aero Shot.lnk");
// Ahol a program található
MyShortcut.TargetPath = path;
// Parancsikon leírása
MyShortcut.Description = "Képmetsző progi.";
// Ikon helye
MyShortcut.IconLocation = path;
// Parancsikon Mentése
MyShortcut.Save();
2. Ablak megjelenítése
Form2 frmK = new Form2();//A Form2 a második form neve (változtatható)
frmK.ShowDialog();
Meglévő XML fájl adatához hozzáadás
using System.Xml;
using System.Xml.Linq;
//XML létrehozása és a gyökér elem létrehozása
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("\t");
settings.OmitXmlDeclaration = false;
settings.Encoding = Encoding.UTF8;
XmlWriter writer = XmlWriter.Create("logs.xml",settings);
writer.WriteStartDocument();
writer.WriteStartElement("Log");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
//XML létrehozás vége....
//Gyökér elemen belüli elemek létrehozása
DateTime dt = DateTime.Now;
string date = dt.ToShortDateString();
string time = dt.ToLongTimeString();
XDocument doc = XDocument.Load("logs.xml");
XElement root = new XElement("Messenge");
root.Add(new XAttribute("Date", date));
root.Add(new XAttribute("Time", time));
XElement userfrom = new XElement("User", "Valaki");
XElement userto = new XElement("User", "Tommy");
root.Add(new XElement("From", userfrom));
root.Add(new XElement("To", userto));
root.Add(new XElement("Text", "Messenges!"));
//Itt a gyökér nevét kell megadni
doc.Element("Log").Add(root);
doc.Save("logs.xml");
Datagridview sor szinezése
int RowIndex = 5;
this.dataGridView1.Rows[RowIndex].DefaultCellStyle.BackColor = Color.FromArgb(123,225,0);
ColorDialog szín elmentése hexakódban
Color color;
color = colorDialog1.Color;
string htmlColor = ColorTranslator.ToHtml(color);
Hexa színkód vagy html színkód megadása textbox színének
string Font_color = "#FF8000";
colors = (Color)ColorTranslator.FromHtml(Font_color);
textBox1.ForeColor = colors;
Folyamat (vagy program) felfüggesztése név alapján
[DllImport("kernel32.dll")]
static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
[DllImport("kernel32.dll")]
static extern uint SuspendThread(IntPtr hThread);
[DllImport("kernel32.dll")]
static extern int ResumeThread(IntPtr hThread);
[DllImport("Kernel32")]
private extern static Boolean CloseHandle(IntPtr handle);
private static void SuspendProcess(int pid)
{
var process = Process.GetProcessById(pid);
if (process.ProcessName == string.Empty)
return;
foreach (ProcessThread pT in process.Threads)
{
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
if (pOpenThread == IntPtr.Zero)
{
continue;
}
SuspendThread(pOpenThread);
CloseHandle(pOpenThread);
}
}
public static void ResumeProcess(int pid)
{
var process = Process.GetProcessById(pid);
if (process.ProcessName == string.Empty)
return;
foreach (ProcessThread pT in process.Threads)
{
IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);
if (pOpenThread == IntPtr.Zero)
{
continue;
}
var suspendCount = 0;
do
{
suspendCount = ResumeThread(pOpenThread);
} while (suspendCount > 0);
CloseHandle(pOpenThread);
}
}
//Felfüggesztő esemény pl.: Button
private void button1_Click(object sender, EventArgs e)
{
//itt adjuk meg a program vagy folyamat nevét
Process[] p = Process.GetProcessesByName("sajatprogram");
foreach (var proc in p)
pid = proc.Id;
if (button1.Text == "Pause")
{
button1.Text = "Resume";
SuspendProcess(pid);
}
else if (button1.Text == "Resume")
{
button1.Text = "Pause";
ResumeProcess(pid);
}
}
Direkt Eseménykezelés
try{
ValamiEsemeny(null, EventArgs.Empty);
}
private void ValamiEsemeny(object sender, EventArgs e)
{
CheckBox6_CheckChanged(sender, e);
//Eseményt előidéző szöveg/érték/tulajdonság megjelenítése:
Button foo = sender as Button;
string s = foo.Text;
}
INI fájl létrehozása/olvasása
A szükséges fájl illetve a projekt letölthető itt: INI file handling class using C#
using INI;
//ini fájl létrehozása
INIFile ini = new INIFile("C:\\test.ini");
//ini fájl olvasása
if (ini.IniReadValue("Settings", "Preset") == "true")
{
Bla bla....
}
//ini fájl írása
ini.IniWriteValue("Settings", "Preset", "false");
A ListView Win7/Vista rendszertéma (stílus) alkalmazása
using System.Runtime.InteropServices;
public const int LVM_FIRST = 0x1000;
public const int LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
public const int LVS_EX_DOUBLEBUFFER = 0x00010000;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
//Imports the UXTheme DLL
[DllImport("uxtheme", CharSet = CharSet.Unicode)]
public extern static Int32 SetWindowTheme(IntPtr hWnd, String textSubAppName, String textSubIdList);
public Form1()
{
InitializeComponent();
SetWindowTheme(listView1.Handle, "explorer", null); //Explorer style
SendMessage(listView1.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_DOUBLEBUFFER, LVS_EX_DOUBLEBUFFER);
}
ListView kiválasztott elem index megjelenítése
int selectindex = listView1.FocusedItem.Index;
Egy karakter előtt és utána lévő szöveg megjelenítése
string xy = "1891x1234";
string elso = xy.Substring(0,xy.IndexOf('x'));
string utolso = xy.Substring(xy.IndexOf('x') + 1);
//output: elso=1891 utolso=1234
TextBox Nagybetű
textBox1.CharacterCasing = CharacterCasing.Upper;
Program futtatása rendszergazdaként:
Process proc = new Process();
proc.StartInfo.FileName = fileName;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.Verb = "runas";
proc.Start();