To H12 : event, to je když... :-)
V editoru máš okno Properties a Events, tak v events dvakrát klikni do políčka u KeyDown, vygeneruje ti metodu, která se bude volat při stisku klávesy.
Příspěvky odeslané z IP adresy 81.19.3.–
Řekl bych, že na hlavním formuláři (Form1) nastavíš KeyPreview na true, tím mu přijdou všechny klávesy i když patří komponentám na něm, pak v eventu KeyDown koukneš, zda (e.KeyCode == Keys.Left) apod. a případně reaguješ.
V aplikaci, na které pracuji, je tato situace:
Jeden formulář "Form1", obsahuje DataGridView, který má jako DataSource jeden BindingSource, který je napojen na List<RowType>.
Napojení Listu na BindingSource dělám až v metodě Load formuláře Form1, do té doby je tam z designéru nastaveno přímo RowType, podle něhož nageneruje sloupce.
RowType jen nějaký typ s public propoertami.
Onen list naplním také v metodě Load. Potom, po napojení Listu na BindingSource na BindingSourcu volám ResetBindings(false).
Vše funguje, ale DataGridView nedovolí řadit řádky dle sloupců.
- Proč?
- Jak to napravit (nejsnáze)?
_________________________________
Tady je kód Form1.cs. Kdo by chtěl simulovat, přikládám přílohu - celý projekt (VC#2008) bez binárek (nutno rebuildnout).
public partial class Form1 : Form
{
IList<TestRow> theList;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
theList = new List<TestRow>();
theList.Add(new TestRow("abc", "xyz", 12, 12.222m));
theList.Add(new TestRow("ccc", "yzx", 10, 100.222m));
theList.Add(new TestRow("bbc", "yzz", 13, 2.222m));
bindingSource1.DataSource = theList;
bindingSource1.ResetBindings(false);
}
}
public class TestRow
{
public TestRow(string one, string two, int number, decimal another) {
this.one = one; this.two = two; this.number = number; this.another = another;
}
public string one { get; set; }
public string two { get; set; }
public int number { get; set; }
public decimal another { get; set; }
}