Evo koda:
Code:
public partial class MyBindingNavigator : UserControl
{
private BindingSource _data;
public MyBindingNavigator()
{
InitializeComponent();
}
public MyBindingNavigator(BindingSource bindingSource)
{
InitializeComponent();
_data = bindingSource;
}
public BindingSource Data
{
set { _data = value; }
get { return _data; }
}
protected override void OnPaint(PaintEventArgs e)
{
this.Location = new Point(4, this.ParentForm.Height - 84);
this.Width = this.ParentForm.Width - 8;
base.OnPaint(e);
}
private void MyBindingNavigator_Load(object sender, EventArgs e)
{
this.Location = new Point(4, this.ParentForm.Height - 84);
this.trackBar1.Maximum = _data.Count;
this._data_CurrentChanged(this, new EventArgs());
_data.DataSourceChanged += new EventHandler(_data_DataSourceChanged);
_data.ListChanged += new ListChangedEventHandler(_data_DataSourceChanged);
_data.CurrentChanged += new EventHandler(_data_CurrentChanged);
}
void _data_CurrentChanged(object sender, EventArgs e)
{
this.label1.Text = "Zapis " + (_data.Position + 1).ToString() + " od " + (_data.Count).ToString() + ".";
if(trackBar1.Maximum != 0) this.trackBar1.Value = _data.Position + 1;
}
void _data_DataSourceChanged(object sender, EventArgs e)
{
trackBar1.Maximum = _data.Count;
}
private void button1_Click(object sender, EventArgs e)
{
_data.MoveFirst();
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
_data.Position = ((TrackBar)sender).Value - 1;
}
private void button2_Click(object sender, EventArgs e)
{
_data.MovePrevious();
}
private void button3_Click(object sender, EventArgs e)
{
_data.MoveNext();
}
private void button4_Click(object sender, EventArgs e)
{
_data.MoveLast();
}
private void button5_Click(object sender, EventArgs e)
{
_data.AddNew();
}
private void button6_Click(object sender, EventArgs e)
{
MyMessageBox message = new MyMessageBox("Da li ste sigurni da brišete zapis?", MessageBoxButtons.YesNo);
if(message.ShowDialog() == DialogResult.Yes)_data.RemoveCurrent();
}
}
public partial class MyBindingNavigator : UserControl
{
private BindingSource _data;
public MyBindingNavigator()
{
InitializeComponent();
}
public MyBindingNavigator(BindingSource bindingSource)
{
InitializeComponent();
_data = bindingSource;
}
public BindingSource Data
{
set { _data = value; }
get { return _data; }
}
protected override void OnPaint(PaintEventArgs e)
{
this.Location = new Point(4, this.ParentForm.Height - 84);
this.Width = this.ParentForm.Width - 8;
base.OnPaint(e);
}
private void MyBindingNavigator_Load(object sender, EventArgs e)
{
this.Location = new Point(4, this.ParentForm.Height - 84);
this.trackBar1.Maximum = _data.Count;
this._data_CurrentChanged(this, new EventArgs());
_data.DataSourceChanged += new EventHandler(_data_DataSourceChanged);
_data.ListChanged += new ListChangedEventHandler(_data_DataSourceChanged);
_data.CurrentChanged += new EventHandler(_data_CurrentChanged);
}
void _data_CurrentChanged(object sender, EventArgs e)
{
this.label1.Text = "Zapis " + (_data.Position + 1).ToString() + " od " + (_data.Count).ToString() + ".";
if(trackBar1.Maximum != 0) this.trackBar1.Value = _data.Position + 1;
}
void _data_DataSourceChanged(object sender, EventArgs e)
{
trackBar1.Maximum = _data.Count;
}
private void button1_Click(object sender, EventArgs e)
{
_data.MoveFirst();
}
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
_data.Position = ((TrackBar)sender).Value - 1;
}
private void button2_Click(object sender, EventArgs e)
{
_data.MovePrevious();
}
private void button3_Click(object sender, EventArgs e)
{
_data.MoveNext();
}
private void button4_Click(object sender, EventArgs e)
{
_data.MoveLast();
}
private void button5_Click(object sender, EventArgs e)
{
_data.AddNew();
}
private void button6_Click(object sender, EventArgs e)
{
MyMessageBox message = new MyMessageBox("Da li ste sigurni da brišete zapis?", MessageBoxButtons.YesNo);
if(message.ShowDialog() == DialogResult.Yes)_data.RemoveCurrent();
}
}
Imam ideju da se ta kontrola automatski (cim se doda u kolekciju kontrola forme preko controls.add) pozicionira na dno forme, i da se promjenom okvira forme moja kontrola sama prilagodjava.
Pokusao sam da override-ujem onPaint dogadjaj osnovne klase. Medjutim, to radi samo polovicno. Kada uradim maximize forme, kontrola se sasvim dobro prilagodi i kulturno se smjesti u dno forme. Ali, klik na restore nece izazvati prilagodjavanje kontrole, tj. kontrola ce ostati na lokaciji koju je maloprije zauzela. Dalje, promjena vertikalne ivice forme uvijek izaziva prilagodjavanje kontrole, a promjena horizontalne ivice forme ne, osim u slucaju kada horizontalna ivica dotice kontrolu.
Totalno sam nov u ovome, pa mi je svaka smjernica dobrodosla.
Pozdrav i hvala.