DataGridView.DrawingRowNumbers
This commit is contained in:
@@ -86,6 +86,7 @@
|
|||||||
<Compile Include="Controls\BinLayoutView.cs">
|
<Compile Include="Controls\BinLayoutView.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\DataGridViewExtensions.cs" />
|
||||||
<Compile Include="Forms\MainForm.cs">
|
<Compile Include="Forms\MainForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace CutList.Forms
|
||||||
|
{
|
||||||
|
public static class DataGridViewExtensions
|
||||||
|
{
|
||||||
|
static readonly StringFormat CenterVerticallyFormat = new StringFormat
|
||||||
|
{
|
||||||
|
Alignment = StringAlignment.Far,
|
||||||
|
LineAlignment = StringAlignment.Center
|
||||||
|
};
|
||||||
|
|
||||||
|
public static void DrawingRowNumbers(this DataGridView dataGridView)
|
||||||
|
{
|
||||||
|
dataGridView.RowPostPaint += (sender, e) =>
|
||||||
|
{
|
||||||
|
var rowNumber = (e.RowIndex + 1).ToString();
|
||||||
|
var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, dataGridView.RowHeadersWidth - 4, e.RowBounds.Height);
|
||||||
|
|
||||||
|
e.Graphics.DrawString(
|
||||||
|
rowNumber,
|
||||||
|
dataGridView.Font,
|
||||||
|
Brushes.Blue,
|
||||||
|
headerBounds,
|
||||||
|
CenterVerticallyFormat);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,6 +26,9 @@ namespace CutList.Forms
|
|||||||
items = new BindingList<Item>();
|
items = new BindingList<Item>();
|
||||||
bins = new BindingList<BinInputItem>();
|
bins = new BindingList<BinInputItem>();
|
||||||
|
|
||||||
|
dataGridView1.DrawingRowNumbers();
|
||||||
|
dataGridView2.DrawingRowNumbers();
|
||||||
|
|
||||||
itemBindingSource.DataSource = items;
|
itemBindingSource.DataSource = items;
|
||||||
itemBindingSource.ListChanged += ItemBindingSource_ListChanged;
|
itemBindingSource.ListChanged += ItemBindingSource_ListChanged;
|
||||||
|
|
||||||
|
|||||||
@@ -13,100 +13,84 @@ using System.Windows.Forms;
|
|||||||
|
|
||||||
namespace CutList.Forms
|
namespace CutList.Forms
|
||||||
{
|
{
|
||||||
public partial class ResultsForm : Form
|
public partial class ResultsForm : Form
|
||||||
{
|
{
|
||||||
public ResultsForm()
|
public ResultsForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
dataGridView1.DrawingRowNumbers();
|
||||||
|
}
|
||||||
|
|
||||||
dataGridView1.RowPostPaint += DataGridView1_RowPostPaint;
|
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
|
||||||
}
|
{
|
||||||
|
var selectedBin = dataGridView1.Rows[e.RowIndex].DataBoundItem as Bin;
|
||||||
|
|
||||||
private void DataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
|
if (selectedBin == null)
|
||||||
{
|
return;
|
||||||
var grid = sender as DataGridView;
|
|
||||||
var rowIdx = (e.RowIndex + 1).ToString();
|
|
||||||
|
|
||||||
var centerFormat = new StringFormat()
|
binLayoutView1.Bin = selectedBin;
|
||||||
{
|
binLayoutView1.Invalidate();
|
||||||
Alignment = StringAlignment.Far,
|
|
||||||
LineAlignment = StringAlignment.Center
|
|
||||||
};
|
|
||||||
|
|
||||||
var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth - 4, e.RowBounds.Height);
|
dataGridView2.DataSource = selectedBin.Items;
|
||||||
e.Graphics.DrawString(rowIdx, this.Font, Brushes.Blue, headerBounds, centerFormat);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
|
public List<Bin> Bins
|
||||||
{
|
{
|
||||||
var selectedBin = dataGridView1.Rows[e.RowIndex].DataBoundItem as Bin;
|
get { return dataGridView1.DataSource as List<Bin>; }
|
||||||
|
set { dataGridView1.DataSource = value; }
|
||||||
if (selectedBin == null)
|
}
|
||||||
return;
|
|
||||||
|
|
||||||
binLayoutView1.Bin = selectedBin;
|
|
||||||
binLayoutView1.Invalidate();
|
|
||||||
|
|
||||||
dataGridView2.DataSource = selectedBin.Items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Bin> Bins
|
|
||||||
{
|
|
||||||
get { return dataGridView1.DataSource as List<Bin>; }
|
|
||||||
set { dataGridView1.DataSource = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var s = new SaveFileDialog();
|
var s = new SaveFileDialog();
|
||||||
|
|
||||||
var today = DateTime.Today;
|
var today = DateTime.Today;
|
||||||
var name = $"{today.Year}-{today.Month.ToString().PadLeft(2, '0')}-{today.Day.ToString().PadLeft(2, '0')} cut list.txt";
|
var name = $"{today.Year}-{today.Month.ToString().PadLeft(2, '0')}-{today.Day.ToString().PadLeft(2, '0')} cut list.txt";
|
||||||
|
|
||||||
s.FileName = name;
|
s.FileName = name;
|
||||||
s.Filter = "Text File|*.txt";
|
s.Filter = "Text File|*.txt";
|
||||||
|
|
||||||
if (s.ShowDialog() != DialogResult.OK)
|
if (s.ShowDialog() != DialogResult.OK)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveBins(s.FileName);
|
SaveBins(s.FileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveBins(string file)
|
private void SaveBins(string file)
|
||||||
{
|
{
|
||||||
var writer = new StreamWriter(file);
|
var writer = new StreamWriter(file);
|
||||||
writer.AutoFlush = true;
|
writer.AutoFlush = true;
|
||||||
|
|
||||||
var max = Bins.Max(b => b.Items.Max(i => ArchUnits.FormatFromInches(i.Length).Length));
|
var max = Bins.Max(b => b.Items.Max(i => ArchUnits.FormatFromInches(i.Length).Length));
|
||||||
var id = 1;
|
var id = 1;
|
||||||
|
|
||||||
foreach (var bin in Bins)
|
foreach (var bin in Bins)
|
||||||
{
|
{
|
||||||
writer.WriteLine(id++.ToString() + ". " + bin.ToString());
|
writer.WriteLine(id++.ToString() + ". " + bin.ToString());
|
||||||
|
|
||||||
var groups = bin.Items.GroupBy(i => $"{i.Name} {i.Length}");
|
var groups = bin.Items.GroupBy(i => $"{i.Name} {i.Length}");
|
||||||
|
|
||||||
foreach (var group in groups)
|
foreach (var group in groups)
|
||||||
{
|
{
|
||||||
var first = group.First();
|
var first = group.First();
|
||||||
var count = group.Count();
|
var count = group.Count();
|
||||||
var length = ArchUnits.FormatFromInches(first.Length).ToString().PadLeft(max);
|
var length = ArchUnits.FormatFromInches(first.Length).ToString().PadLeft(max);
|
||||||
var name = first.Name;
|
var name = first.Name;
|
||||||
|
|
||||||
var pcsSingularOrPlural = count == 1 ? "pc " : "pcs";
|
var pcsSingularOrPlural = count == 1 ? "pc " : "pcs";
|
||||||
|
|
||||||
writer.WriteLine($" {count}{pcsSingularOrPlural} @ {length} LG Tag: {name}");
|
writer.WriteLine($" {count}{pcsSingularOrPlural} @ {length} LG Tag: {name}");
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.WriteLine("---------------------------------------------------------------------");
|
writer.WriteLine("---------------------------------------------------------------------");
|
||||||
//writer.WriteLine();
|
//writer.WriteLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.Close();
|
writer.Close();
|
||||||
|
|
||||||
Process.Start(file);
|
Process.Start(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user