Yazar Arşivi: onder

The Server Is Not Operational hatası

hata2

 

Yukarıdaki gibi bir hata alırsak aldığımız hata Active Directory sunucusuna bağlanamadığımızı gösterir. kod tarafında bağlantı cümlelerimizi doğru yazdığımızdan emin olmalıyız, active directory bağlantısı için gerekli kod satırlarını paylaşacağız, eğer sorun bağlantı cümlelerinde değilse serverları resetlemek bir çözüm olabilir. başka bir kaynaktaki bilgiye göre ‘Microsoft Management Console 3.0 for Windows Server 2003′   programının kurulması sorunu çözmüş.

web config’imizin içine yazdığımız active directory bağlantı kodları aşağıdaki gibidir bu formatta yazabiliriz.

<add key="DirectoryPath" value="LDAP://computerName/DC=domainAdı,DC=uzantı"/>
<add key="DirectoryDomain" value="domainadres yada ip adres"/>

 

 

Microsoft Web Infrastructure Hatası

image

 

Böyle bir hata ile karşılaştığımız durumda bize gösterilen Infrastructure dll’ini yüklememiz gerekiyor. Bu hatayı genellikle publish ettiğimiz projemizi IIS yardımıyla yayınlayacağımız zaman karşımıza çıkar. Hatanın çözümü olarak visual studio programımızdan Tools> Nuget Package Manager> Package Manager Console ekranına gelerek,

hata2


Install-Package Microsoft.Web.Infrastructure

yukarıdaki kodu açılan ekranda yüklüyoruz daha sonra tekrar publish edip projemizi paylaştığımızda hatanın giderildiğini göreceğiz.

 

 

Min(2) must be less than or equal to max (-1) in a range object hatasi

hata1

Yukarıdaki gibi hata ile karşılaştığımızda bir şeyleri eksik yazdığımızı anlamalıyız, aldığımız hata “Min(x) must be less than or equal to max (-1) in a range object”  x bulunan yere 1 den farklı değerlerde gelmesi mümkündür. Hatanın sebebi ise select çektiğimiz datatable’da sayısal bir değer arıyorsak eğer bunun sayısal bir değer olduğunu belirtmemiz gereklidir.

Hatanın örnek kodlarla çözümü aşağıdaki gibidir.

Hata almaya sebep veren kod satırı

dtSenaryolar.select ( "SenaryoID =" + strSenaryoID) 

Hatanın çözümü için yapılacak değişikliklerin kod satırı

dtSenaryolar.select( "SenaryoID = '" + strSenaryoID + "'" ) 

Bu gibi durumlarda aynı işlemi string format ile yapabiliriz ve hata payı daha düşüktür.

Hata almaya sebep veren kod satırı

dtSenaryolar.select(string.Format("SenaryoID={0}",strSenaryoID)) 

Hatanın çözümü için yapılacak değişikliklerin kod satırı

dtSenaryolar.select(string.Format("SenaryoID='{0}'",strSenaryoID))  

C# ADO.NET Parametreli Islemler

Ado.NET giriş konulu yazımızda ExecuteScalar, ExecuteNonQuery ve ExecuteReader konularını yazmaya çalıştık.  Bu sefer Insert işlemini parametreli olarak yapmaya çalışacağız. Aşağıdaki gibi bir form tasarımımız var.

2 adet groupBox’ımız var baştaki groupBox’ın içine ID, UrunAd, Fiyat ve Kategorisini göstermek için labellar ve textboxlar ekliyoruz. Kategori kısmını seçmek için combobox ekliyoruz 1 adet’te yeni kayıtlar için kaydet butonu koyuyoruz. Alttaki groupBox’a ise listeleme işlemini göstermek için listview ekliyoruz.

FormUrun

Form tasarımı işleminden sonra kodlama kısmına geçiyoruz. Öncelikle bağlantı cümlemizi yazıyoruz.

SqlConnection baglan = new SqlConnection(“Server=.;Initial Catalog=Northwind;Integrated Security=true”);

Ürünleri getir adında bir metot oluşturuyoruz.

void UrünleriGetir()
{
listView1.Items.Clear();
SqlCommand cmd = new SqlCommand("Select c.categoryId, p.ProductName,p.UnitPrice,c.CategoryName,p.ProductID from products p inner join categories c on c.categoryId=p.categoryId", baglan );

baglan.Open();
SqlDataReader rd = cmd.ExecuteReader();

while (rd.Read())
{
ListViewItem list = new ListViewItem();
list.Text=rd["ProductId"].ToString();
list.SubItems.Add(rd["ProductName"].ToString());
list.SubItems.Add(rd["CategoryName"].ToString());
list.SubItems.Add(rd["UnitPrice"].ToString());
list.SubItems.Add(rd["CategoryId"].ToString());

listView1.Items.Add(list);

}
cnn.Close();
}

Yazdığımız kodu açıklayacak olursak, birden fazla yerde bu metodumuzu çağıracağımız için yeni ekleme yaptığımız yerlerde ekleme yaptığımız ürünü o anda görmek için listview’ı temizliyoruz.

Sql cümlemizi SqlCommand içinde yazıyoruz. sorgumuzdan sonra virgül koyup baglantımızın adını tanıtmamız lazım yoksa bize sorgu bağlantınız açın diye hata döner.

Baglantıyı açıp sorgumuzu ExecuteReader ile okuyup SqlDataReader değişkenimize atıyoruz. ExecuteReader bize SqlDataReader sonucu döndüreceği için bu işlemi yaptık.

while döngüsü ile SqlDataReader tipinde oluşturduğumuz değişkenimizi SqlDataReader’ın Read() metodu ile okuyoruz, yani demek istediğimiz okuyacak veri olduğu sürece while döngüsünde dönmesini istiyoruz.

Okuduğumuz verileri listview’e eklemek için listviewItem ınstance’ını alıyoruz. ve aldığımız ınstance’ın özelliklerinden text’ine oluşturduğumuz rd değişkenindeki [“ProductId”] kolonunu ekle diyoruz. burda index numarasınıda belirtebiliriz yani rd[0], textini ekledikten sonra subıtem’larını yani alt alanlarını diğer kolonlarla dolduruyoruz en sonunda listview’imizi doldurduğumuz listviewItem değişkenini listview1’in item’larına ekliyoruz.
son olarak bağlantımızı kapatıyoruz.

Şimdi ise Kategorileri Getir adında bir metot oluşturuyoruz.

void KategorileriGetir()
{
SqlCommand cmd = new SqlCommand("Select CategoryId,CategoryName From Categories",baglan);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

cmbKategori.DataSource = dt;
cmbKategori.DisplayMember = "CategoryName";
cmbKategori.ValueMember = "CategoryID";

}

Kodu açıklayacak olursak yukarıdaki gibi SqlCommand ile sorgu cümlemizi yazıyoruz. Bu sefer yazdığımız sql sorgusunu SqlDataAdapter ile tutuyoruz ve DataTable ınstance’ı alarak yeni bir DataTable nesnesi oluşturuyoruz. sorgumuzu tuttuğumuz SqlDataAdapter nesnesini Fill metodu ile DataTable nesnemize yani dt isimli değişkenimize atıyoruz. Şuan sorgudan dönen sonucumuz bizim oluşturduğumuz DataTable nesnesinde DataTable ise sanal bir tablo görevi görmektedir.

Sıra şimdi oluşturduğumuz comboboxların içini doldurmaya geldi Combobox’ın datasource özelliği ile direk içini doldurabiliyoruz. DataSource özelliğine DataTable nesnemiz olan dt yi verdik. DisplayMember’ını yani görünecek olan kısmını CategoryName olarak belirledik. ve ValueMember’ını yani CategoryName karşılık gelen CategoryID sini belirledik.

Şimdi ise eklediğimiz butonun tıklandığı zaman ne yapacağını kodlamaya geldi.

private void btnKaydet_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("Insert Into Products(CategoryID,UnitPrice,ProductName) Values(@KategoriId,@fiyat,@ad)", baglan);
cmd.Parameters.AddWithValue("@KategoriId", cmbKategori.SelectedValue);
cmd.Parameters.AddWithValue("@fiyat",Convert.ToDouble(txtFiyat.Text.Trim()));
cmd.Parameters.AddWithValue("@ad", txtAd.Text.Trim());

baglan.Open();
cmd.ExecuteNonQuery();
baglan.Close();

UrünleriGetir();

}

Yukarıda ki kodu açıklayacak olursak yine SqlCommand ile Sql Sorgumuzu yazıyoruz. Kaydet butonuna bastığımız zaman veri tabanına ekleme sorgumuzu yazıyoruz. value değerlerini dışarıdan parametre ile alacağımız için @ işareti ile parametrelerini tanımladık. ilk parametremizi dolduralım “@kategoriId” yazıp virgülden sonra kategoriId ye gelecek değerin hangi nesneden gelceğini yazıyoruz Combobox’ın selectedValue’su yani yukarı valuemember olarak categoryId sini belirttiğimiz için kategoryId’yi göndericek. diğer parametrelerde aynı bu şekilde doldurulur. Sonrasında baglantımız açılıp ExecuteNonQuery metodumuz çağırılır. Bu metot ile insert işlemini gerçekleştirmiş oluruz. Sonrasında da baglantımızı kapatırız. Eklediğimiz kaydı görmek için UrunleriGetir metoduna gideriz.

Ekstra olarak listview’de seçtiklerimizi textboxlara ve combobox’ta göstermek için listview’ın SelectedIndexChanged eventini aşağıdaki kodları yazıyoruz. Listview’e çift tıkladığımızda bu event açılır. Aşağıdaki kod satırlarında ise oluşturduğumuz listview’ın FocusedItem özelliği ile oluşturduğumuz item ismindeki listview ınstancemızın SubItems’larındaki index numaralarına göre text’indekileri göstermek istediğimiz nesnelerimizin text’ine gönderiyoruz.

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.FocusedItem != null)
{
ListViewItem item = listView1.FocusedItem;
txtAd.Text = item.SubItems[1].Text;
lblID.Text = item.SubItems[0].Text;
txtFiyat.Text=item.SubItems[3].Text;

cmbKategori.SelectedValue = item.SubItems[4].Text;

}
}

Formumuzun Load’ında  UrünleriGetir ve KategorileriGetir metodunu çağırıyoruz.

private void FormUrunler2_Load(object sender, EventArgs e)
{
UrünleriGetir();
KategorileriGetir();
}

Böyle bir örneklede bu konuyu anlatmaya çalıştık, Sorularınızı yorum olarak bırakabilirsiniz.

 

 

 

 

C# Entity Framework Giris

Entity Framework Ado.Net in tam tersine aynı kodları defalarca yazmak yerine daha az kodla istediklerimizi karşılamış oluruz. Bunu örnekler yaparak sizlerle paylaşarak da sizlere en uygun en anlaşılır şekilde aktarmaya çalışacağım.
Entity Framework Code First Yapısı ve Örnekler

İlk olarak Visual Studio da bir Console Application açarak başlayalım.

Referance kısmına sağ tıklayarak NuGet ‘den Entity Framework paketini projemize ekleyelim.

Olusturduğumuz Projeye CalisanContext ismin de bir class oluşturalım

Hemen ardından Calisan diye bir class oluşturalım ve bu Calisan class’ımıza Property’ler tanımlayalım.

- public int Id {get; set; }

- public string AdSoyad { get ; set ; }

- public DateTime DogumTarihi {get ; set ;}

dedik ve oluşturduğumuz CalisanContext’e gidip Calisan class’ımı çağıralım.

CalisanContext’e DbContext’ten kalıtım veriyoruz.

CalisanContext : DbContext diyerek. using System.Data.Entity; kütüphanesinide using kısmında eklemiş oluruz. bu kütüphaneyi eğer eklemezsek bir işlem yapamayız.

Devam edelim ;

CalisanContext : DbContext

{

public DbSet<Calisan> Calisanlar {get; set ;} diyerek Calisanlar class'ında bulanan propertylerimize ulaşmış oluruz.

}

Bu işlemleri gerçekleştirdikten sonra App.config kısmına gelerek Context adımızı ve Database adımızı girerek tablomuzu oluşturalım.

Geldik App.config kısmına burada şunları yazarız.En alt kısımda bulunan Entity kapanışının hemen altına ;

<connectionStrings>
<clear/>
<add name="CalisanContext" connectionString="Server=.;Database=Calisanlar;Integrated Security=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

Hemen notumuzu düşelim : CalisanContext’imiz oluşturduğumuz CalisanContext class’ımız ile aynı isimde olmalıdır eğer aynı isim olmaz ise hata vericektir bunu önlemeninde bir yolu vardır bunuda Anotasyonlar konusunda ayrıntılı bir şekilde üzerinde duracağız. Devam edecek olursak eğer isimleri aynı verdik ve Database Tablo adımızı ise Calisanlar yaptık.,

Bu işlemlerin ardından ;

Visual Studio üst menüsünden TOOLS’a gelerek ordan ise

NuGet Package Manager ‘a gelip en üstte bulununan Package Manager Console dedikten sonra altta açılacak olan  Package Manager Console PM> kısmınına ilk olarak,

Enable-Migrations yazıyoruz ve enter’a bastık olası hata durumlarınıda sizlerle paylaşacağız önümüzdeki derslerde..
Ardından Add-Migration diyip enter’a bastıktan sonra Migration adımızı ilkDbOlusturma diyelim.
Bu adımdan sonra ise Update-Database diyerek Database’imizi oluşturmuş oluruz.
SqlServer da kontrollerimizi yaparak bu dersin sonunada gelmiş oluyoruz ayrıntılı ve bol örneklerle devam edeceğiz. Soru ve Önerileriniz için yorum alanına yorum bırakabilirsiniz. Teşekkür ederim..

C# ADO.NET

Listview’de Execute Scalar kullanarak veri tabanından veri çekme işlemini yapacağız. Tasarımımızı aşağıdaki gibi yapıyoruz. GroupBox’ın içinde 1 buton 1 listview ekleyip listview’in üstündeki ok işaretine tıklayıp edit colums kısmından Ad ve Soyad ekleyip, view yani görünümünü Details yapınca kolonlarımız gözükecektir.
ExecuteScalarTasarım işleminden sonra butona çift tıklayıp click eventine kodlarımızı yazmaya başlıyoruz.

private void button1_Click(object sender, EventArgs e)
{

SqlConnection baglanti = new SqlConnection(); // Sql Bağlantı class'ımızın instance'ını alıyoruz.
//Bağlanacağımız Server ismi ve veri tabanımızın ismini ConnectionString ile belirtiyoruz.
baglanti.ConnectionString=("Server=.;Initial Catalog=Northwind;Integrated Security=true;");
baglanti.Open(); // Bağlantımızı açıyoruz.

// Sorgumuzu SqlCommand içinde yazıyoruz (Baş harfi a olanı getir dedim.)
SqlCommand sorgu = new SqlCommand("Select Firstname From employees where firstname like 'a%' ",baglanti);
// ExecuteScalar metodunu tek değer döndüreceğimiz zaman kullanıyoruz bize object türünde sonuc döndüreceği için sonuc diye object türünde bir değişkene atıyoruz.
object sonuc = sorgu.ExecuteScalar();

//ListView'de göstermek için listview classının instance'sini alıyoruz.
ListViewItem list = new ListViewItem();

list.Text = sonuc.ToString(); //List'in textine sonuc değişkenimizi atıyoruz.

//Yukarıdaki yaptıklarımızla listview'in 1. kolonunu doldurduk şimdi 2. kolonu dolduralım

//SqlCommand ile 2. sorgumuzu yazıyoruz
SqlCommand sorgu2 = new SqlCommand("Select Lastname from employees where firstname like 'a%'",baglanti);
object sonuc2 = sorgu2.ExecuteScalar();
list.SubItems.Add(sonuc2.ToString()); //Bu sefer list'in SubItems'ına yani alt elemanına ekliyoruz.

listView1.Items.Add(list); //En sonra listview'de list'i ekleyip tüm değerlerimizi görebiliyoruz.
}

Yukarıda tek veri dönmesini istediğimiz için ExecuteScalar kullandık, Bu sefer ExecuteReader ile result bir değer döndürecek işlem yapacağız. Yukarıdaki işlemde tasarım ile ilgili gerekli bilgileri verdiğim için burada tekrar tasarım kısmını anlatmayacağım.

ExecuteReade

private void button2_Click(object sender, EventArgs e)
{

SqlConnection baglanti = new SqlConnection(); //Sql Bağlantı class'ımızın instance'ını alıyoruz.
baglanti.ConnectionString = ("Server=.;Initial Catalog=Northwind;Integrated Security=true");
baglanti.Open();

SqlCommand cmd = new SqlCommand("Select CustomerID,CompanyName from Customers",baglanti);
//ExecuteReader bize SqlDataReader türünde bir değer döndüreceği için sonuc adında bir değişkene komudumuzu atıyoruz.
SqlDataReader sonuc= cmd.ExecuteReader();

while (sonuc.Read()) //Okunacak veri olduğu sürece while döngüsünde dönecek
{
ListViewItem list = new ListViewItem(); //Listview'e eklemek için instance alıyoruz.
list.Text = sonuc[0].ToString(); //list'in textine 0. indekteki değeri yani customerID yi yazdırıyoruz.
list.SubItems.Add (sonuc[1].ToString()); //listin alt elemanına 1. indexteki değeri yazdıyoruz.

listView2.Items.Add(list); // List'i listview'de gösteriyoruz.
}
}

Bu sefer ExecuteNonQuery yani insert delete update gibi işlemlerde sonuc döndürmeyen komutu işleyen metodu kullanacağız. Tasarım aşağıdaki gibi 2 adet textbox’a ad ve soyad bilgisi gireceğiz butona bastığımızda Employees tablosuna eklemiş olacağız.

Employees

private void button3_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "") //TextBoxlar'a değer girilmediyse işlem yaptırmayacak.
{
MessageBox.Show("Lütfen Boş Alanları Doldurunuz.");
}
else
{
try
{

// Calisan diye bir class oluşturup içine Ad ve Soyad olarak 2 tane property ekledik ve aşağıda class'ımızın instance'ını aldık
Calisan cls = new Calisan();
cls.Ad = textBox1.Text;
cls.Soyad = textBox2.Text;

SqlConnection baglan = new SqlConnection(); //Sql Bağlantı class'ımızın instance'ını alıyoruz.
baglan.ConnectionString = ("Server=.;Initial Catalog=Northwind;Integrated Security=true");
baglan.Open();

//SqlCommand ile ekleme yapacağımız tabloyu ve değerleri nereden alacağını yazıyoruz.
SqlCommand sorgu = new SqlCommand("Insert Into Employees(Firstname,Lastname) values('" + textBox1.Text + "','" + textBox2.Text + "')", baglan);

sorgu.ExecuteNonQuery();

//String formatı kullanarak ekrana eklenen kişiyi mesaje olarak gösteriyoruz.
string sonuc = string.Format("{0} {1}", textBox1.Text, textBox2.Text);
MessageBox.Show(sonuc + " Veri Tabanına Eklenmiştir.");

baglan.Close();
}

//Hata oluşması durumunda catch bloğu çalışacak ve bize message gösterecek.
catch (Exception ex)
{
MessageBox.Show("Hata Oluştu", ex.Message);
}
}
}

C# At Yarisi Oyunu

 

At yarışı oyunumuzun tasarımını yapıyoruz. 2 adet picturebox , 1 adet buton ve 1 tane de timer nesnesi ekliyoruz picturebox nesnelerine sağ tıklayıp properties’den Image ekleyip Size Mode’unu  StretchImage yaparak resmi picturebox nesnesine sığdırmış oluyoruz. Formumuzun arka planına uygun bir arka plan resmi seçip ekliyoruz. Butonumuzun properties ayarlarından Dock ayarını bottom yapıp aşağıya sabitliyoruz.

At Yarısı

Formumuzun tasarımı bittikten sonra başlat butonunun click eventini açıp kodlama kısmına geçiyoruz.

private void btnBaslat_Click(object sender, EventArgs e)  // Başlat butonuna tıklandığında burası çalışacak

timer1.Interval = 1000; //Timer'in çalışma sıklığına 1000 milisecond(1 saniye) verdik.

timer1.Enabled = true; //timer'ı çalışır duruma getirdik.
}

private void timer1_Tick(object sender, EventArgs e)  //Timer'ı çalışır duruma getirdikten sonra timer'ın içindeki kodlar çalışmaya başlar.
{
Random rnd = new Random();
int sayi1 = rnd.Next(0, 10);    // Random class'ı ile 0 ile 10 arasında 2 tane sayı üretip değişkene atıyoruz.
int sayi2 = rnd.Next(0, 10);

//Değişkene attığımız rastgele sayıları pictureBoxların sola olan uzaklıklarına yani left'ine ekledik.
pctAt1.Left += sayi1;
pctAt2.Left += sayi2;

if(pctAt1.Right>=this.Width ||pctAt2.Right>=this.Width) If bloğu ile At1 ve At2 nin sağa olan uzaklıkları Formun genişliğinden büyük veya eşitse aşağıdaki kodları çalıştıracak.
{

timer1.Stop(); // Timer'ı durduracak
if (pctAt1.Right > pctAt2.Right) // At1' in sağa olan uzaklığı At2 'nin sağa olan uzaklığından büyükse if bloğu çalışacak
{
MessageBox.Show("At1 yarışı kazandı");

}
else  // değilse aşağıdaki mesage gözükecek.
{
MessageBox.Show("At2 yarışı kazandı");
}
}

}

private void Form1_Load (object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized; // Form açılırken tam ekran açılmasını belirttik.

}

C# Beni Yakala Oyunu

Beni yakala oyunumuzun form tasarımını aşağıdaki gibi yapıyoruz. Tek bir buton ekleyip Text’ine Beni Yakala yazıyoruz.
Beni Yakala

Formun tasarımı bittikten sonra butonu sağ tıklayıp Properties’e tıklayıp şimşek işaretine yani event’lere tıklayıp MouseEnter eventini açarız içine kodlarımızı yazmaya başlarız.

int hamlesayisi = 0;

private void btnBeniYakala_MouseEnter(object sender, EventArgs e)  //Butonun üzerine mouse ile geldiğimizde bu event çalışır.
{
hamlesayisi++; //Globalda tanımladığımız hamlesayisi değişkenin değerini her mouse enterda 1 arttıkdık.

this.Text=string.Format("Hamle Sayisi: {0}",hamlesayisi ); //hamle sayısı her mouse enterda Form'un Textinde gösterdik.

Random rnd = new Random();  // Random bir sayı üretiyoruz.

int formunYüksekliği = this.ClientSize.Height; //Formun alanını ClientSize ile alıp değişkenlere atıyoruz.
int formunGenisliği = this.ClientSize.Width;

int butonunYüksekliği = button1.Height; //Butonun yüksekliğini ve genişliğini alıp değişkenlere atıyoruz.
int butonunGenisliği = button1.Width;

//Rastgele sayı üretirken minumum sayı sıfır, maksimum sayı olarak ise formun yüksekliği ile butonun yüksekliğinin farkı kadar değer verdik.
//Aynı şekilde Formun genişliği ile butonun genişliğinin farkı kadar 2. bir random sayı üretiyoruz.

int sayi1 = rnd.Next(0, formunYüksekliği - butonunYüksekliği);
int sayi2 = rnd.Next(0, formunGenisliği - butonunGenisliği);

btnBeniYakala.Top = sayi1; //btnBeniYakala'nın Form içerisinde yukarı olan uzaklığına rastgele üretilen sayi1'i verdik

btnBeniYakala.Left = sayi2; //btnBeniYakala'nın Form içerisinde sola olan uzaklığına rastgele üretilen sayi2'yi verdik

}

private void btnBeniYakala_Click(object sender, EventArgs e) // Butona tıklandığında yapılacakları yazıyoruz.
{
string sonuc = string.Format("Tebrikler...{0} hamlede yıklayabildiniz.", hamlesayisi);
MessageBox.Show(sonuc);
hamlesayisi = 0;
}

 

C# Browser Uygulamasi

Aşağıdaki resimde görülen form uygulamasında kendi browser’ımızı yapacağız.
Öncelikle formumuzu tasarlayalım en üste Panel koyuyoruz içine işlem yapacak butonlarımızı ve adres seçtireceğimiz combobox’ımızı ekliyoruz. Butonlarımızın arka plan resimlerini işlemlerimizin görsellerini ekleyebiliriz yada git, geri, yenile gibi yazılarla da bırakabiliriz. Panel’imizin sağ tıklayıp Properties ayarlarından Dock ayarını Top olarak ayarlıyoruz yani üst kısma sabitliyoruz. Altına toolbox’dan web browser ekliyoruz onunda Dock ayarını Fill yani ortada durmasını ayarlıyoruz en alta ise toolbox’dan Trackbar ekliyoruz onunda Dock ayarını Bottom yani en alta sabitliyoruz.

Browser Uygulaması

 

Formumuzun tasarımı bittikten sonra kodlarımızı yazmaya başlayalım. Öncelikle Form yüklenirken yapılacakları ve sonra panelimizin içindeki butonların yapacağı işlemleri belirliyoruz.

private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;  // Form açılışta tam ekran açılsın diye belirttik.

//Form açıkken Enter'a basınca btnGit'in tıklanmasını sağlayacağız.
this.AcceptButton = btnGit;

webBrowser1.Navigate("http://www.google.com");  //Formun ilk açılışta Google'ın açılmasını istedik.

//TrackBar'ın değerlerini Form yüklenirken veriyoruz.
trackBar1.Maximum = 100;
trackBar1.Minimum = 5;
trackBar1.Value = 5;

}

private void trackBar1_Scroll(object sender, EventArgs e)
{
this.Opacity = trackBar1.Value/100D; // En alta eklediğimiz Trackbar'ın Opacity işlemini yapmasını istedik

}

private void btnGit_Click(object sender, EventArgs e)
{
string gidilecekAdres = comboBox1.Text;   // Combobox'ın text kısmına yazdığımız adresi string değişkene attık
webBrowser1.Navigate(gidilecekAdres); // WebBrowser'ın Navigate özelliği ile yazdığımız adresi gösterdik.
}

private void btnRefresh_Click(object sender, EventArgs e)
{
webBrowser1.Refresh();  // Refresh butonumuzun click'ine webBrowser'ın yenilenmesi için gerekli kodu yazdık.
}

private void btnHome_Click_1(object sender, EventArgs e)
{
webBrowser1.GoHome(); //AnaSayfaya git kodunu yazdık.
}

private void btnForward_Click(object sender, EventArgs e)
{
webBrowser1.GoForward(); // ileri git kodunu yazdık.
}

private void btnBack_Click(object sender, EventArgs e)
{
webBrowser1.GoBack();  //Geri git kodunu yazdık.
}

 

Youtube

Youtube en kapsamlı ve en büyük.Video Paylaşım ve Barındırma Sitesidir.” 15 Şubat 2005’te 3 eski Paypal çalışanı tarafından kurulmuş ve Ekim 2006’da Google tarafından satın alınmıştır.

Youtube’a videolarınızı ekleyebilir, başkalarının eklediği videoları izleyebilir ve hatta bu videolara yorum yapabilirsiniz.

YouTube‘a video ekleyebilmeniz için, öncelikle kayıt yapmış olmalısınız, daha sonra da kullanıcı adınızla giriş yapmanız gerekmektedir.

Youtube’dan Google Adsense aracılığıyla yüklediğiniz videolarda reklam göstererek gelir kazanmanız mümkündür bunun için öncelikle adsense hakkında bilginiz olması gerekmektedir buraya tıklayarak  adsense sayfamızdan bilgi edinebilirsiniz.

Youtube aracılığıyla birçok video yayıncısı reklam veren kişiler sayesinde videolarında o kişilerin reklamlarını göstererek gelir elde ediyor yalnız bu reklamları youtube kendisi ayarlıyor biz kendimiz şu kişinin şu reklamını yayınlıycaz demiyoruz. ve reklamlara tıklama başına youtube bize adsense aracılığıyla tıklama başına gelirimize göre belli bir gelir sağlıyor.

Youtube’a eklediğimiz videoların ticari kullanım haklarını kanıtlayabilmemiz gereklidir. videolarınızın özgün olması hem youtube’dan telif hakkı uyarısı almamanız için hemde size ait bir videodan para kazanmanız açısından daha iyidir ileride özgün olmayan videolarınız için telif hakkı uyarısı alırsanız kanalınız spam olarak algılanır ve youtube spam olarak algıladığı kanalları sonlara doğru attığından videolarınızn izlenmeleri direk düşmeye başlar.

Videolarınızın illa özgün olması gerekmez yalnız telif hakkı kurallarına dikkat etmeniz gerekir ve bazı videolar telif hakkı ile korunuyor. videoyu yükledikten sonra video yöneticisi kısmına gelin videolarınızın yanında “Eşleşen 3. taraf içeriği” gibi yazı görürseniz o videoyu hemen silin yoksa adsense hesabınızda tehikeye girebilir.

Videolarınızı yükledikten sonra bu videolarınızı para kazanma için aktif edip bir adsense hesabıyla ilişkilendirmeniz gereklidir. ve videolarınızın 10. saniyesinde gözüken reklamlara tıklayan kullanıcılar sayesinde gelir kazanırsınız ve kesinleşmiş kazançlar adsense hesabınıza ayın 10’u ile 14’ü arasında eklenir ve toplam bakiyeniz ödeme eşiğine ulaştıysa ödeme alırsınız.

Kesinleşmiş YouTube kazançlarını, AdSense hesabınızda bulabilirsiniz. Önceki ayın kesinleşmiş YouTube kazançları, AdSense hesap bakiyenize ayın 10’u ile 14’ü arasında eklenir ve toplam bakiyeniz ödeme eşiğine ulaştıysa o ay ödenir.

Youtube kazançlarınızın günlük tahmini kazançları ve finansal performansınızı görüntülemek için Youtube Analytics kısmını inceleyebilirsiniz.