DataGridView.DrawingRowNumbers

This commit is contained in:
AJ
2021-10-07 09:10:34 -04:00
parent 63fa51c5cd
commit 5af1daac11
4 changed files with 91 additions and 72 deletions
+1
View File
@@ -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>
+31
View File
@@ -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);
};
}
}
}
+3
View File
@@ -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;
+55 -71
View File
@@ -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);
} }
} }
} }