jak zachytit dialogResult u ShowPageSetupDialog   zodpovězená otázka

VB.NET, WinForms

Před vytisknutím osahu který je ve webBrowseru (pomocí webBrowser.print) zobrazím uživateli formulář ShowPageSetupDialog (aby si mohl vybrat tiskárnu a taky aby si mohl nastavit co bude v záhlaví a zápatí, protože to mě trošičku potrápilo). Jak ale zachytit dialogResult ShowPageSetupDialogu aby v případě že uživatel klikne na storno, se nic netisklo?

Chtěl jsem to udělat podobně jako u klasických formulářů, ale pokud zadám následující kód, podtrhne se mi Me.WebBrowser1.ShowPageSetupDialog() s nadávkou, že to nevrací žádné hodnoty (Expression does not produce a value). Jak tedy zjistit co uživatel na formuláři stiskl (předpokládám že tlačítka OK a STORNO tam nejsou jen pro srandu)?

        If Me.WebBrowser1.ShowPageSetupDialog() = DialogResult.OK Then
            Me.WebBrowser1.Print()
        End If

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

Problém je v tom, že to používáte špatně. Zavoláním ShowPageSetupDialog se nastavení vzhledu stránky interně uloží (pokud uživatel klepnul na OK) do instance WebBrowseru a použije se při zavolání metody Print. WebBrowser je jen .NET wrapper do Internet Exploreru, takže to funguje stejně, jako kdybyste v IE na panelu nástrojů stisknul buď Tisk... (Print) nebo Vzhled stránky... (ShowPageSetupDialog).

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

To ano, ale ve vzhledu stránky mohu nastavit záhlaví a zápatí a to má pak vliv na tisk (to co vyplním do záhlaví a zápatí v ShowPageSetupDialogu to se pak taky vytiskne).

Tento dialog zobrazuji pouze kvůli tomu, aby si uživatel mohl nastavit záhlaví a zápatí, protože vzhledem k povaze aplikace není žádoucí, aby v něm něco bylo.

Nevíte zda (a jak) jde nastavit záhlaví a zápatí přímo v kódu? Tím by odpadla nutnost zobrazovat ShowPageSetupDialog.

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

Obávám se, že programově to nastavit nepůjde.

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

Sice je to pozdě. Ale lepší pozdě, než nikdy. Může se to hodit do budoucna.

Dim old_header As String = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "header", Nothing)
Dim old_footer As String = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "footer", Nothing)

My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "header", "")
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "footer", "")

Form1.WebBrowser1.Print()

My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "header", old_header)
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup", "footer", old_footer)

A pak je to bez záhlaví a zápatí. Bohužel musím taktéž používat webbrowser k tisknu dat, neb richtextbox při tisku nebere TAB jak jste již psal v jiném příspěvku.

nahlásit spamnahlásit spam 1 / 1 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