1

最初の5文字を​​取得して、同じ名前で以前に保存したピクチャーボックスと一致させる必要があります。

例として、このファイル名は12345_Text_Text_Text.pdfである可能性があります

Dim key As String = Path.GetFileNameWithoutExtension(e.Name)
Dim p As PictureBox = CType(Me.Controls(key), PictureBox)
p.Image = My.Resources.Ok

私はこれを行うことでうまくいくと思いました。

Dim subkey As String
Dim key As String = Path.GetFileNameWithoutExtension(e.Name)
subkey = Left(key, 5)

問題はLeftコマンドのようです、Public Property Left As Integer' has no parameters and its return type cannot be indexed.

ここに完全なサブルーチン;

    Private Sub Watcher_Changed(ByVal sender As Object, ByVal e As FileSystemEventArgs) Handles Watcher.Changed

    Dim key As String = Path.GetFileNameWithoutExtension(e.Name)

    Dim subkey As String
    subkey = Left(key, 5)

    Dim p As PictureBox = CType(Me.Controls(key), PictureBox)
    p.Image = My.Resources.Ok

    End Sub

私が間違っていることについての提案?

4

2 に答える 2

4

通話を次のように変更します。

subkey = Strings.Left(key,5);

LeftはStringsオブジェクトのインスタンスにアタッチされた静的メソッドであるため、問題は表記法(スタンドアロンのLeft参照)の1つにすぎませんでした。

これが問題の解決に役立つことを願っています。

明確化/デモンストレーションのための編集:

以下の@SSSで説明されているように、WinFormsプロジェクトのフォームには、画面上のフォームの水平位置を定義するLeftプロパティがあります。「Left」メソッドが修飾なしで呼び出された場合、たとえば、その前にオブジェクトまたは名前空間の参照がない場合、VBは解決プロセスに進み、その解釈方法を決定しました。フォームのネイティブの「Left」プロパティは「勝者」でしたが、提供された引数を使用すると、受け取ったエラーが発生しました。

このような名前の競合を解決するための解決策は、問題のメソッドまたはプロパティへの完全修飾参照と呼ばれるものを提供することです。「Microsoft.VisualBasic.Left」を指定することは、ここで説明するようにStringsクラスへの参照を提供することと同様に、これを解決するための完全に有効な方法です。

これが混乱を解消するのに役立つことを願っています。

この提案された修正には若干の不確実性または混乱がある可能性があるため、テストプロジェクトで使用されている修正のスクリーンショットを次に示します。

Strings.Leftを使用したVisualStudio2010VB.NETテストプロジェクトコード
VB.NETでStrings.Leftを使用したサンプルコード...

プロジェクト出力のテスト
サンプルコードの結果

于 2012-09-19T02:18:31.750 に答える
1

以下は私のために働いたものです:

subkey = Microsoft.VisualBasic.Left(key, 6)

于 2012-09-19T02:31:56.457 に答える