Posts Tagged ‘ C++

Eksport dataTable do pliku CSV

Drobna funkcja u艂atwiaj膮ca 偶ycie, czyli zapis danych z tabeli dataTable do pliku w formacie CSV( kolumny oddzielone tabulatorem, kodowanie UTF8 ).


 /// <summary>
 /// Obs艂uga zapisu danych z obiektu dataTable jako pliku CSV.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void zapiszDaneJakoCSV_Click(object sender, EventArgs e)
 {
 string Saved_File = "";

 SaveFileDialog saveFileDialog = new SaveFileDialog();
 saveFileDialog.Title = "Zapisz dane jako CSV";
 saveFileDialog.FileName = "Dane";
 saveFileDialog.Filter = "Plik .csv|*.csv";

 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
 Saved_File = saveFileDialog.FileName;

 FileStream fs = new FileStream(Saved_File, FileMode.Create);
 StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);

 int iColCount = obiektDataTable.Columns.Count;
 for (int i = 0; i < iColCount; i++)
 {
 sw.Write(obiektDataTable.Columns[i]);
 if (i < iColCount - 1)
 {
 sw.Write("\t");
 }
 }
 sw.Write(sw.NewLine);

 foreach (DataRow dr in obiektDataTable.Rows)
 {
 for (int i = 0; i < iColCount; i++)
 {
 if (!Convert.IsDBNull(dr[i]))
 {
 sw.Write(dr[i].ToString());
 }
 if (i < iColCount - 1)
 {
 sw.Write("\t");
 }
 }
 sw.Write(sw.NewLine);
 }
 sw.Close();

 }
 }

Powi臋kszanie i przewijanie wykres贸w C#

Czyli ma艂a ale bardzo przydatna rzecz, kt贸rej znalezienie mo偶e zaj膮膰 troch臋 czasu :)


 chartArea1.CursorX.IsUserEnabled = true;
 chartArea1.CursorX.IsUserSelectionEnabled = true;
 chartArea1.CursorY.IsUserEnabled = true;
 chartArea1.CursorY.IsUserSelectionEnabled = true;
 chart1.ChartAreas.Add(chartArea1);
Zoom and scroll chart in c#

Przyk艂ad przewijania/powi臋kszania wykres贸w w C#

Przecinek w nazwie kolumny a red cross error na wykresie

Niedawno mia艂em nieprzyjemno艣膰 borykania si臋 z problemem „czerwonego krzy偶a” wy艣wietlanego na wykresach ( Chart , System.Windows.Forms.DataVisualization.Charting ). B艂膮d ten pojawia si臋 m.in. przy problemach z przetworzeniem danych wej艣ciowych. W moim przypadku przyczyn膮 problem贸w by艂y przecinki w nazwach kolumn obiektu DataTable, kt贸ry to ustawia艂em jako DataSource dla wykresu.

Dok艂adnie: Warto艣ci w nazwach kolumn, kt贸re znajdowa艂y si臋 po przecinku by艂y „ignorowane” w DataSource. Skutkiem tego nazwy kolumn w DataSource nie zgadza艂y si臋 z tymi w DataTable, w moim przypadku par臋 kolumn mia艂o t臋 sam膮 nazw臋 ( co jest oczywistym b艂臋dem).

red cross error csharp chart

:)

Zmiana rozmiar贸w paneli w c#

Przeszukuj膮c czelu艣ci internetu natrafi艂em na bardzo ciekaw膮, rozszerzaj膮c膮 mo偶liwo艣ci zwyk艂ego Forms.Panel ‘u o dynamiczne zmienianie jego rozmiaru. Klas臋, kt贸ra zapewnia t臋 funkcjonalno艣膰 znalaz艂em na forum msdn, oto ona:

Klas臋 nale偶y doda膰 do projektu, skompilowa膰. Nowa kontrolka powinna pojawi膰 si臋 w Toolbox聽’ie

nobugz:

using System;
using System.Drawing;
using  System.Windows.Forms;

public class SizeablePanel : Panel {
 private const int cGripSize = 20;
 private bool mDragging;
 private Point mDragPos;

 public SizeablePanel() {
 this.DoubleBuffered = true;
 this.SetStyle(ControlStyles.ResizeRedraw, true);
 this.BackColor =  Color.White;
 }

 protected override void  OnPaint(PaintEventArgs e) {
 ControlPaint.DrawSizeGrip(e.Graphics,  this.BackColor,
 new Rectangle(this.ClientSize.Width -  cGripSize, this.ClientSize.Height - cGripSize, cGripSize, cGripSize));
 base.OnPaint(e);
 }

 private bool IsOnGrip(Point pos) {
 return pos.X >= this.ClientSize.Width - cGripSize &&
 pos.Y >= this.ClientSize.Height - cGripSize;
 }

 protected override void OnMouseDown(MouseEventArgs e) {
 mDragging  = IsOnGrip(e.Location);
 mDragPos = e.Location;
 base.OnMouseDown(e);
 }

 protected override void  OnMouseUp(MouseEventArgs e) {
 mDragging = false;
 base.OnMouseUp(e);
 }

 protected override void  OnMouseMove(MouseEventArgs e) {
 if (mDragging) {
 this.Size = new Size(this.Width + e.X - mDragPos.X,
 this.Height + e.Y - mDragPos.Y);
 mDragPos = e.Location;
 }
 else if (IsOnGrip(e.Location)) this.Cursor = Cursors.SizeNWSE;
 else this.Cursor = Cursors.Default;
 base.OnMouseMove(e);
 }
}

Od siebie doda艂bym tylko


this.BringToFront();

w OnMouseMove();.

Obs艂uga right click w C#

Do osi膮gni臋cia efektu obs艂ugi „prawego kliku” nale偶y odpowiednio spreparowa膰 akcje ( event ) MouseDown. Metoda, kt贸ra powinna zosta膰 wywo艂ana dla tej akcji powinna wygl膮da膰 w nast臋puj膮cy spos贸b:


private void panel_RightMouseDown(object sender, MouseEventArgs e)
{
 if (e.Button.ToString() == "Right")
 {
  // TODO
 }
}

Partnerzy Pro: