2017-07-13 10 views
0

私はWPFアプリケーションを複数のウィンドウでVBで作成しました。これらのウィンドウには、ユーザがデータを入力するためのいくつかのコントロールがあります。このデータはデータベースに保存されます。私は、ユーザーが与えられたデータセットを編集できるようにし、データが入力されたのと同じウィンドウを使う方がずっと便利です。ユーザーが「追加」または「編集」をクリックするかどうかによって、ウィンドウの背後にある別のコードを実行します。同じ目的のために同じWPFウィンドウを使用

私の問題は、これらの2つのイベントを区別する方法を見つけることができないということです。 MainWindowクラスには、 "Add"と "Edit"というボタンがあります。クリックすると、「Data.xaml」の新しいインスタンスを含む新しいタブが作成されます。 "Data.xaml"の背後には "Data.vb"があります。 "Data.vb"は "Edit"または "Add"コードを実行する必要があるかどうかをどのように伝えることができますか?

答えて

0

簡単な解決策は何をすべきか教えてくれるDataクラスにいくつかのプロパティを追加することです:AddEditModeは、2つのフィールドを持つ列挙型である

Public Partial Class Data Inherits Window 
    // ... 

    Public Property Mode As Mode 

    // ... 
End Class 

Addボタンのクリックハンドラで

は、Mode.AddModeを設定EditボタンのクリックハンドラでMode.EditModeを設定します。

あなたは、引数としてモードを取る新しいコンストラクタを作成することができ構築ウィンドウの後Modeの変化を防ぎたい場合:ModeData.vb表情であなたのロジックで次に

Public Partial Class Data Inherits Window 
    // ... 

    Public Sub New(mode As Mode) 
     Me.New() 
     Mode = mode 
    End Sub 

    Public ReadOnly Property Mode As Mode 

    // ... 
End Class 

をし、適切な処置を行います。

Private Sub AddButton_Click(sender As Object, e As RoutedEventArgs) 
    Dim dataWindow = New Data(Mode.Add) 
    dataWindow.ShowDialog() 
End Sub 

Private Sub EditButton_Click(sender As Object, e As RoutedEventArgs) 
    Dim dataWindow = New Data(Mode.Edit) 
    dataWindow.ShowDialog() 
End Sub 
+0

FYIの質問はVBですので、それに応じてコードを翻訳してください。 – Craig

+0

@Craigありがとうございました。私は 'vb.net'タグに気付かなかった。 – Maxim

+0

私はもっとはっきりしていたはずです - 'Data'はフレームに含まれているクラスで、これは今度はタブアイテムに含まれています。私の問題はフレームを通して情報を渡すことです... – Sharpmetalobject

関連する問題