Aralık Kullanarak Switch-Case | C#
Merhaba, tek bir değerle karşılaştırarak switch-case yapısı olduğu gibi SQL’deki gibi başka şartlar da kullanılabiliyormuş. Şu şekildeymiş: Selamlar.
Dinle, anla, çöz...
Merhaba, tek bir değerle karşılaştırarak switch-case yapısı olduğu gibi SQL’deki gibi başka şartlar da kullanılabiliyormuş. Şu şekildeymiş: Selamlar.
Merhaba, API’leri şimdiye kadar hiç Ajax ile tetiklememiştim.Öyle bir ihtiyaç oldu ve hata aldım.Hatanın da detayı yok maalesef.status 0 dönüyor. Biraz araştırdıktan sonra çözümü buldum:Package Manage Console’dan aşağıdaki paketi yüklüyoruz: Sonra WebApiConfig.cs’ye şu satırı ekliyoruz: Sonra da ilgili Controller’ın tepesine de şunu ekliyoruz: Selamlar.
Merhaba, excel işlemlerinde EPPlus kullanıyorum.
Her ihtiyacımı görüyor sağolsun.
Geçenlerde de, içerisinde makro barındıran bir excele ihtiyacım oldu.
Baktım ona da destekleri varmış.
Bir kez daha takdir ettim.
Excel oluşturduğum metodu tümüyle paylaşıyorum.
Makro eklediğim kısım en altta.
public static byte[] OlusturExcel<T>(IEnumerable<T> liste, string calismaSayfasiAdi)
{
byte[] sonuc;
using (ExcelPackage pck = new ExcelPackage())
{
var ws = pck.Workbook.Worksheets.Add(calismaSayfasiAdi);
// Once basliklari yazalim.
IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
int kolonSayac = 1;
int satirSayac = 1;
foreach (PropertyInfo prop in properties)
{
string baslik = prop.Name;
ws.Cells[satirSayac, kolonSayac].Value = baslik;
ws.Cells[satirSayac, kolonSayac].Style.Font.Bold = true;
ws.Cells[satirSayac, kolonSayac].Style.Font.Name = "Tahoma";
ws.Cells[satirSayac, kolonSayac].Style.Font.Size = 10;
ws.Cells[satirSayac, kolonSayac].Style.Fill.PatternType = ExcelFillStyle.Solid;
ws.Cells[satirSayac, kolonSayac].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.AliceBlue);
kolonSayac++;
}
// Sonra iceriklere gecelim.
satirSayac = 2;
foreach (T item in liste)
{
kolonSayac = 1;
foreach (PropertyInfo prop in properties)
{
object propValue = prop.GetValue(item, null);
if (propValue == null)
{
ws.Cells[satirSayac, kolonSayac].Value = "";
}
else
{
TypeCode typeCode = Type.GetTypeCode(prop.PropertyType);
switch (typeCode)
{
case TypeCode.Int32:
ws.Cells[satirSayac, kolonSayac].Value = Convert.ToInt32(propValue.ToString().Replace(".", ","), CultureInfo.GetCultureInfo("tr-TR"));
break;
case TypeCode.Decimal:
ws.Cells[satirSayac, kolonSayac].Value = Convert.ToDecimal(propValue.ToString().Replace(".", ","), CultureInfo.GetCultureInfo("tr-TR"));
break;
default:
ws.Cells[satirSayac, kolonSayac].Value = propValue.ToString().Trim();
break;
}
}
ws.Cells[satirSayac, kolonSayac].Style.Font.Name = "Tahoma";
ws.Cells[satirSayac, kolonSayac].Style.Font.Size = 9;
kolonSayac++;
}
satirSayac++;
}
ws.DefaultRowHeight = 25;
ws.Cells.AutoFitColumns();
// Makro ekledigim kisim iste burasi...
pck.Workbook.CreateVBAProject();
pck.Workbook.CodeModule.Name = "Module1";
StringBuilder bfrMakroKod = new StringBuilder();
bfrMakroKod.Append(@"Function ZamkinosEPPlusTest() As Boolean");
bfrMakroKod.Append(Environment.NewLine);
bfrMakroKod.Append(@" MsgBox ""Zamkinos test!""");
bfrMakroKod.Append(Environment.NewLine);
bfrMakroKod.Append(@" ZamkinosEPPlusTest = False");
bfrMakroKod.Append(Environment.NewLine);
bfrMakroKod.Append(@"End Function");
bfrMakroKod.Append(Environment.NewLine);
pck.Workbook.CodeModule.Code = bfrMakroKod.ToString();
sonuc = pck.GetAsByteArray();
}
return sonuc;
}
Selamlar.
Merhaba, web sitelerinden bazı bilgileri alabilmek için Selenium kütüphanesini kullanarak bir uygulama geliştirmiştim.Ancak uygulamanın çalıştığı bilgisayardaki Chrome, her güncellendiğinde sistemdeki versiyonla programın kullandığı ChromerDriver aynı değil hatası veriyordu. Ben de biraz araştırma ve biraz da şansımın yardımıyla şu yöntemi buldum: Bu şekilde yolu sabit verince …
Merhaba, .net 4.6.1 kullanan birkaç projeyi 4.7.1’e geçirmek istedim.Aslında konunun başlangıcı “Could not create SSL/TLS secure channel.” hatasıydı.Neyse, bu hatayı araştırırken 4.6 framework’ünde sunucudaki geçerli protokolü kullandığına dair bir yazı okudum.Yani bizim atadığımız protokolü hesaba almıyor arkadaş.Yazıda bir kaç yöntem önermişti.Bir tanesi de 4.7’ye geçebilirsiniz …
Merhaba, C#’ta datagrid kullandığım form uygulamaları oluyor.
Her seferinde yaptığım işlemleri bir daha araştırıp çözümler buluyormuşum gibi hissetmeye başladım.
O yüzden hepsi burada topluca dursun diyerek burada paylaşıyorum:
private void InitializeComponent()
altına şunu ekliyoruz:
this.MyDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.MyDataGridView_CellContentClick);
Ana kodumuza da şunu ekliyoruz:
private void MyDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 11 && !(e.RowIndex == -1))
{
DataGridView myDataGridView = (DataGridView)sender;
string sUrl = myDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
Process.Start(new ProcessStartInfo { FileName = sUrl, UseShellExecute = true });
}
}
Misal 6, 7 ve 15. kolonlar parasal değer içersin.
for (int i = 0; i < 16; i++)
{
switch (i)
{
case 6:
case 7:
case 15:
MyDataGridView.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
MyDataGridView.Columns[i].DefaultCellStyle.FormatProvider = Sabitler.UsCulture;
MyDataGridView.Columns[i].DefaultCellStyle.Format = "N2";
break;
}
}
Önce DataGridView kolonlarını belirliyoruz.
dt.Columns.Add(new DataColumn("City", typeof(string)));
dt.Columns.Add(new DataColumn("District", typeof(string)));
dt.Columns.Add(new DataColumn("Neigborhood", typeof(string)));
dt.Columns.Add(new DataColumn("BuildingNumber", typeof(string)));
dt.Columns.Add(new DataColumn("ZipCode", typeof(string)));
myDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
Elimizde bir liste olsun ve bu listeden DataTable dolduralım.
dt.Rows.Clear();
foreach (XmlNode node in lstEv)
{
dt.Rows.Add(
node.Attributes["CT"].Value,
node.Attributes["DS"].Value,
node.Attributes["NH"].Value,
node.Attributes["BN"].Value,
node.Attributes["ZC"].Value
);
}
myDataGridView.DataSource = dt;
Filtreleme için DataGridView üzerine bir kaç TextBox ekleyebiliriz. Örneğin birisi şehir filtresi olsun.
private void InitializeComponent()
altına şunu ekliyoruz:
this.txtFiltreSehir.TextChanged += new System.EventHandler(this.txtFiltreSehir_TextChanged);
Ana kodumuza da şunu ekliyoruz:
private void txtFiltreSehir_TextChanged(object sender, EventArgs e)
{
dt.DefaultView.RowFilter = string.Format("[{0}] LIKE '%{1}%'", "City", txtFiltreSehir.Text);
}
myDataGridView.DataSource = dt;
foreach (DataGridViewRow row in myDataGridView.Rows)
{
row.HeaderCell.Value = String.Format("{0}", row.Index + 1);
}
myDataGridView.Columns[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
myDataGridView.Columns[i].HeaderCell.Style.Font = new Font("Arial", 13F, FontStyle.Bold, GraphicsUnit.Pixel);
Farklı bir kaç siteden verileri çeken ve ilgili GRID’lere dolduran bir uygulama idi benimkisi.
Ana ekranda da durumu görüntülemek için LABEL nesneleri vardı.
public class ThreadTemelNesne
{
public Label? Lbl1 { get; set; }
public Label? Lbl2 { get; set; }
public string? SehirAdi { get; set; }
}
public void GetirBirinciSitedenVeri(ThreadTemelNesne objThread)
{
Thread trd = new Thread(new ParameterizedThreadStart(getirBirinciSitedenVeri));
trd.IsBackground = true;
trd.Start(objThread);
}
private void getirBirinciSitedenVeri(object objThread)
{
ThreadTemelNesne obj = (ThreadTemelNesne)objThread;
Label l = obj.Lbl1;
Label l2 = obj.Lbl2;
//....
//..
if (l.InvokeRequired)
{
l.Invoke(new MethodInvoker(delegate { l.Text = sayac.ToString() + ". record has been downloaded..."; }));
}
else
{
l.Text = sayac.ToString() + ". record has been downloaded...";
}
}
Selamlar.
Merhaba, elimde malzemeler ve o malzemelerle uyumlu araç ID’lerinin olduğu şöyle bir veri seti var: Bu veriden şöyle bir sonuç tablosu elde etmek istiyorum: Bunun için aşağıdaki scripti kullandım. Script içerisinde geçen fonksiyon da bu: Selamlar.