VB.net

2016-05-20 10 views
0

編集を表示しないWebブラウザに組み込まれた:VBは、私の第一言語ではありませんが、私は回転するプログラムを作成しようとしています、私はVB.net

を行うために必要なものを行うための最も現実的な方法であると思われます一連のPDFとWebページをフルスクリーンウィンドウに表示します。私はこの例(https://msdn.microsoft.com/en-us/library/3s8ys666(v=vs.110).aspx)をベースとして使用しましたが、メニューオプションを取り除き、InfoboardModeサブに追加して、dirフォルダー内のファイルを回転させました。私はwebbrowser1オブジェクトを表示することに失敗していますが、ファイルは回転しません。お知らせ下さい。

は今

Imports System 
Imports System.Windows.Forms 
Imports System.IO 
Imports System.Threading 
Imports System.Security.Permissions 


Public Class Form1 


Private WithEvents webBrowser1 As WebBrowser 
Private WithEvents pageTimer As System.Windows.Forms.Timer 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
    Me.Location = New Point(0, 0) 
    Me.Size = SystemInformation.PrimaryMonitorSize 
    Me.FormBorderStyle = FormBorderStyle.None 
    webBrowser1.Dock = DockStyle.Fill 
    webBrowser1.GoHome() 

    Controls.Add(webBrowser1) 

    'webBrowser1.Navigate("c:\test\example.pdf") 

End Sub 

Public Sub Main() 

End Sub 

Public Sub InfoboardMode() 
    Dim counter As Integer = 0 
    Dim counter1 As Integer = 0 
    Dim dir As String = "c:\test" 
    Dim FileCount = 1 
    pageTimer.Interval = 20000 

    Do While counter < FileCount 
     Dim URLs() = New IO.DirectoryInfo(dir).GetFiles("*.pdf", IO.SearchOption.AllDirectories).ToArray 
     FileCount = My.Computer.FileSystem.GetFiles(dir).Count 
     Dim link As String = "" + dir + "\" + URLs(counter).ToString 
     webBrowser1.Navigate(link) 
     pageTimer.Start() 
     counter = counter + 1 
     counter1 = counter1 + 1 
     If counter >= FileCount Then 
      counter = 0 
     End If 

     If counter1 = FileCount * 4 Then 
      counter = FileCount + 1 
     End If 
    Loop 
    Application.Exit() 
End Sub 

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown 
    InfoboardMode() 

End Sub 
End Class 

マイ結果をありがとう巨大な、ボーダレスウィンドウが、グレー以外の何ものでも。

編集2:いいえ成功

+0

この場合、 'Application.Run(New Form1)'は使用できません。おそらく、あなたが見ることのできないバックグラウンドで例外がスローされます。これは解決策ではありませんが、最初のフォームを表示するためにアプリケーションが最初に起動するときに 'Application.Run()'が**使用されるべきです**。 –

+0

また、 'Controls.AddRange(New Control(){webBrowser1}')の代わりに 'Me.Controls.Add(webBrowser1)'を実行するとどうなりますか? –

+0

最後に、UIスレッドで 'Thread.Sleep()'を使用するとブロックされます。これは実際に問題になるかもしれません。代わりに 'System.Windows.Forms.Timer'を使って回転させます。 –

答えて

0

あなたのための現在の方法を停止しないタイマーを使用してVisualヴィンセントの提案に続き。それがうまくいかない理由は、遅延が無限ループになっているからです。

タイマーのTickイベントは、Intervalミリ秒(20000 msまたは20秒ごとに発生)ごとに発生するはずです。ところで

Dim counter As Integer = 0 
Dim dir As String = "c:\test" 
Dim FileCount As Integer = 1 

Private Sub pageTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles pageTimer.Tick 
    Dim URLs() As FileInfo = New IO.DirectoryInfo(dir).GetFiles("*.pdf", IO.SearchOption.AllDirectories) 'Why were you calling .ToArray() on an array? 
    FileCount = URLs.Length 'Here you can just check the amount of items in the URLs array. 

    Dim link As String = IO.Path.Combine(dir, URLs(counter).FullName) 
    webBrowser1.Navigate(link) 

    counter += 1 
    If counter >= FileCount Then 
     counter = 0 
    End If 
End Sub 

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown 
    pageTimer.Interval = 20000 
    pageTimer.Start() 
End Sub 

決して使用 +は、文字列を連結します。常にアンパサンド &を使用してください。この場合、 linkロジックを IO.Path.Combine()に置き換えました。これは、ファイルパスを連結するときに使用する方が適しています。

counter1も不要であると思われるため削除しました。


MSDNのタイマーについては、こちらをご覧ください。