Výchozí pozice kurzoru ve Formuláři   otázka

VB.NET

Dobrý den, potřeboval bych poradit, jak donutit kurzor aby se objevil při otevření formuláře v prvním řádku a sloupci DataGridView. Mám formulář rozdělený pomocí SplitContiner kde nahoře jsou TextBoxy a dole DataGridView a nemohu nadefinovat TabIndex DataGridView na nižší hodnotu než TextBoxy nahoře. Je prosím nějaký způsob jak toto udělat. Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zavolejte DataGridView.Focus().

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

To jsem zkusil dát do Load a nefinguje to.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

co zkusit select() ???

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Dobrý den,

pokud potřebujete předat focus na konkrétní buňku v datagridview, je možné to udělat takto:

Dim radek as integer=0
Dim sloupec as integer=0

'označí příslušnou buňku
mujDatagridView.Item(sloupec, radek).Selected = True

'zavolá beginEdit (buňka bude v modu edit-bude možné do ní rovnou psát)
mujDatagridView.BeginEdit(True)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ještě jsem zapomněl dodat jednu samozřejmou věc. Pokud budete tento kód používat v události form_Load musí to být samozřejmě až poté, co do datagridview načtete data. V opačném případě dostanete vyjímku, protože se budete odkazovat na neexistující buňky.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Bohužel ani toto mi nefunguje. Buňka se sice zamodří, ale není připravena ani k editaci a když stisknu šipky dolů nahoru výběr se nepohybuje. Výsledek je takový, že když nastavím sloupec na 2 a řádek na 2 tak mám zamodřený jak sloupes a řádek 0 tak 2.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hoďte sem kód, kterým to nastavujete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mám to takto:

Private Sub Vzor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the '_44848315DataSet.sCR' table. You can move, or remove it, as needed.
        Me.SCRTableAdapter.Fill(Me._44848315DataSet.sCR)
        Me.SCRBindingSource.Filter = "IDS like '9900'"
        'TODO: This line of code loads data into the '_44848315DataSet._TestTest' table. You can move, or remove it, as needed.
        Me._TestTestTableAdapter.Fill(Me._44848315DataSet._TestTest)
        'TODO: This line of code loads data into the '_44848315DataSet._Testpol' table. You can move, or remove it, as needed.
        Me._TestpolTableAdapter.Fill(Me._44848315DataSet._Testpol)
        'TODO: This line of code loads data into the '_44848315DataSet._Test' table. You can move, or remove it, as needed.
        Me._TestTableAdapter.Fill(Me._44848315DataSet._Test)

        Dim radek As Integer = 2
        Dim sloupec As Integer = 2

        'označí příslušnou buňku
        _TestDataGridView.Item(sloupec, radek).Selected = True

        'zavolá beginEdit (buňka bude v modu edit-bude možné do ní rovnou psát)
        _TestDataGridView.BeginEdit(True)

    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jestli nebude problém v těch filtrech...

Zkuste zakomentovat řádek Me.SCRBindingSource.Filter = "IDS like '9900'"

a zkuste jestli Vám to bude fungovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě takhle, pokud chcete mít vždy označenou jenom jednu buňku a máte nastavenou vlastnost multiselect na True, nejspíš ji budete muset ručně "odznačit"

mujDatagridView.Item(sloupec, radek).Selected = False

A moc jsem to nepochopil s tím dalším výběrem. Máte ozančenou buňku v datagridview a zmáčknete šipku. Co chcete aby se stalo? Výběr se má přesunout na vedlejší buňku v datagridview?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Záleží na nastavení EditMode - možnosti (hodí se první a pokračovat s CurrentCell a BeginEdit):

  DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter
  'DataGridView1.EditMode = DataGridViewEditMode.EditOnF2
  'DataGridView1.EditMode = DataGridViewEditMode.EditOnKeystroke
  'DataGridView1.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2
  'DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je třeba nastavit

 DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podle řešení ve zdejší diskuzi by šlo:

  Dim radek as integer=0
  Dim sloupec as integer=0      

  DataGridView1.CurrentCell = DataGridView1.Item(radek, sloupec)
  DataGridView1.BeginEdit(True)
 

viz

http://www.vbnet.cz/forum-tema--4269-dat...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

První je sloupec (x), pak řádek (y) - ale jsou obě hodnoty nula, vyjde to nastejno

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

tak ta poslední alternativa

  Dim radek as integer=0
  Dim sloupec as integer=0      

  DataGridView1.CurrentCell = DataGridView1.Item(radek, sloupec)
  DataGridView1.BeginEdit(True)

funguje, ale pouze pokud si přidám tlačítko které stisknu. V Load to nefunguje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už je zde upozorněno - v Load může být na nastavení DataGridView brzy, zkuste kód, (který funguje!) dát do Sub Form1_Shown

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji, již to funguje. Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback