C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: VBのプログラムについて


(過去ログ 133 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■78424 / inTopicNo.1)  VBのプログラムについて
  
□投稿者/ NKSH (3回)-(2016/01/13(Wed) 14:21:55)

分類:[.NET 全般] 

はじめまして、VBのプログラムについて質問させていただきます。

VBでTree階層で表示されている名前の部分を選択し、その名前のところを削除するようなプログラムを作っています。
しかし、選択したところの名前の値が取得できない状態となっています。

そこで質問ですが、値を取得することができるようになるためには、どの部分を修正したらよいでしょうか?


#コード#
Public Class MainForm

Private _SelectOrder As OrderClass
Private _SelectProduct As ProductClass
Private _SelectProcess As ProcessClass
Private _SelectParts As PartsClass
Private _LoginUser As UserClass

Public Property LoginUser() As UserClass
Get
Return Me._LoginUser
End Get
Set(ByVal value As UserClass)
Me._LoginUser = value
End Set
End Property
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.Text = " ログインユーザ "
Me.TreeViewLoad()

End Sub

***********//tree階層表示//*******************************************

Private Sub TreeViewLoad()

Dim contorol As New Contoroller
Dim orderlist As ArrayList = contorol.GetOrderList

Me.TreeView.Nodes.Clear()

Dim rootNode As TreeNode
rootNode = New TreeNode()
rootNode.Text = " 受注リスト "
TreeView.Nodes.Add(rootNode)

Dim prod As ProductClass
Dim proc As ProcessClass
Dim parts As PartsClass
Dim order As OrderClass


For Each order In orderlist


Dim myTreeNodeArray(order.ProductList.Count - 1) As TreeNode

Dim i As Integer = 0
Dim orderNode As New TreeNode("番号" + order.OrderNo + ":受注先 :" + order.OrderName)
For Each prod In order.ProductList

Dim mytreeNodeArrayProcess(prod.ProcessList.Count - 1) As TreeNode
Dim productNode As New TreeNode("プロダクト名 :" + prod.ProductName)
productNode.ForeColor = Color.Purple
myTreeNodeArray(i) = New TreeNode("プロダクト名 :" + prod.ProductName)
myTreeNodeArray(i).Tag = prod
i += 1

Dim j As Integer = 0
For Each proc In prod.ProcessList

Dim mytreeNodeArrayParts(proc.PartsList.Count - 1) As TreeNode
Dim procNode As New TreeNode("プロセス名" + proc.ProcessName)
procNode.ForeColor = Color.Green

mytreeNodeArrayProcess(j) = New TreeNode("プロセス名 :" + proc.ProcessName)
mytreeNodeArrayProcess(j).Tag = proc
j += 1

Dim q As Integer = 0
For Each parts In proc.PartsList
Dim partsNode As New TreeNode("部品名 :" + parts.PartsName)
mytreeNodeArrayParts(q) = New TreeNode("部品名 :" + parts.PartsName)


orderNode.ForeColor = Color.Red
procNode.Nodes.Add(partsNode)
mytreeNodeArrayParts(q).Tag = parts
q += 1

Next parts
productNode.Nodes.Add(procNode)

Next proc
orderNode.Nodes.Add(productNode)
Next prod

orderNode.Tag = order
Me.TreeView.Nodes(0).Nodes.Add(orderNode)
Next order
With Me.TreeView
.ExpandAll()
.ForeColor = Color.Navy
.BackColor = Color.Azure
.LineColor = Color.Red
.ContextMenuStrip = Me.ContextMenuStrip1
End With
End Sub
********************************************************************************


***************************************************************************************:
Private Sub TreeView_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView.AfterSelect
Label1.Text = e.Node.Level
Label2.Text = e.Node.Text

If e.Node.Level = 0 Then
ToolStripMenuItem_Edit.Enabled = True
ToolStripMenuItem_Add.Enabled = True
ToolStripMenuItem_Delete.Enabled = True
ContextMenuItem_OrderAdd.Enabled = True
ContextMenuItem_OrderDelete.Enabled = True
ContextMenuItem_ProcessAdd.Enabled = False
ContextMenuItem_processDelete.Enabled = False
ContextMenuItem_ProcessEdit.Enabled = False
ContextMenuItem_ProductAdd.Enabled = False
ContextMenuItem_ProductDelete.Enabled = False
ElseIf e.Node.Level = 1 Then
Dim order As OrderClass = TreeView.SelectedNode.Tag
ToolStripMenuItem_Edit.Enabled = False
ContextMenuItem_OrderAdd.Enabled = False
ContextMenuItem_OrderDelete.Enabled = True
ContextMenuItem_ProcessAdd.Enabled = False
ContextMenuItem_processDelete.Enabled = False
ContextMenuItem_ProcessEdit.Enabled = False
ContextMenuItem_ProductAdd.Enabled = True
ContextMenuItem_ProductDelete.Enabled = True
Else
ToolStripMenuItem_Edit.Enabled = False
ContextMenuItem_OrderAdd.Enabled = False
ContextMenuItem_OrderDelete.Enabled = False
ContextMenuItem_ProcessAdd.Enabled = True
ContextMenuItem_processDelete.Enabled = True
ContextMenuItem_ProcessEdit.Enabled = True
ContextMenuItem_ProductAdd.Enabled = False
ContextMenuItem_ProductDelete.Enabled = False
End If
End Sub
************************************************************************



****************************削除するプログラムコード***********************************

Private Sub ContextMenuItem_OrderDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextMenuItem_OrderDelete.Click
Dim contorol As New Contoroller
Dim result As Boolean

If MessageBox.Show(" 本当に削除しますか?", _
"確認", MessageBoxButtons.OKCancel, _
MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.OK Then

result = contorol.DeleteOrder(Me._SelectOrder)←−−−−−−−@ここの値が取得できません@
If result = True Then
MessageBox.Show("削除しました")
End If
End If

End Sub
******************************************************************************

End Class

#コード終わり#

です

アドバイスよろしくお願いいたします
引用返信 編集キー/
■78425 / inTopicNo.2)  Re[1]: VBのプログラムについて
□投稿者/ WebSurfer (777回)-(2016/01/13(Wed) 16:04:24)
No78424 (NKSH さん) に返信


> ****************************削除するプログラムコード***********************************
>
> Private Sub ContextMenuItem_OrderDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextMenuItem_OrderDelete.Click
> Dim contorol As New Contoroller
> Dim result As Boolean
>
> If MessageBox.Show(" 本当に削除しますか?", _
> "確認", MessageBoxButtons.OKCancel, _
> MessageBoxIcon.Question, _
> MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.OK Then
>
> result = contorol.DeleteOrder(Me._SelectOrder)←−−−−−−−@ここの値が取得できません@
> If result = True Then
> MessageBox.Show("削除しました")
> End If
> End If
>
> End Sub
> ******************************************************************************

Controller とは何でしょう? 定義が書いてないようですし、.NET のライブラリにもな
さそうなんですが。New するだけで DeleteOrder というメドッソが使えるようになるの
ですか?


#何を作っているか(コードを見ればわかるとは言わないでくださいね)とご自分の環境
 ぐらいは最初に書きましょう。


引用返信 編集キー/
■78426 / inTopicNo.3)  Re[1]: VBのプログラムについて
□投稿者/ WebSurfer (778回)-(2016/01/13(Wed) 16:35:57)
No78424 (NKSH さん) に返信

ひょっとして、Controller.DeleteOrder メソッドがどうのこうの以前に Me._SelectOrder が
Nothing になってしまうと言ってますか?

アップされたコードを見る限り、以下の定義以外は見当たらないので、アップされたコード以
外の部分で OrdersClass を初期化してその参照を変数 _SelectOrder に代入することをしてな
ければ Me._SelectOrder は Nothing になるのでは?

Private _SelectOrder As OrderClass

質問として成り立ってないように思えますが。
引用返信 編集キー/
■78441 / inTopicNo.4)  Re[2]: VBのプログラムについて
□投稿者/ NKSH (4回)-(2016/01/13(Wed) 19:27:51)
No78426 (WebSurfer さん) に返信
> ■No78424 (NKSH さん) に返信
>
> ひょっとして、Controller.DeleteOrder メソッドがどうのこうの以前に Me._SelectOrder が
> Nothing になってしまうと言ってますか?
>
> アップされたコードを見る限り、以下の定義以外は見当たらないので、アップされたコード以
> 外の部分で OrdersClass を初期化してその参照を変数 _SelectOrder に代入することをしてな
> ければ Me._SelectOrder は Nothing になるのでは?
>
> Private _SelectOrder As OrderClass
>
> 質問として成り立ってないように思えますが。

環境と何を作っているかを書くの忘れていて申し訳ございませんでした。
環境は.NETです。

質問の内容は、Me._SelectOrderがNothingになってしまうということです。

Controllerとは、また別のクラスで作成しているもので、そこでContorollerに移って、DeleatOrderの処理に移るということです。

きちんと質問してなくて申し訳ございませんでした。
引用返信 編集キー/
■78442 / inTopicNo.5)  Re[3]: VBのプログラムについて
□投稿者/ WebSurfer (780回)-(2016/01/13(Wed) 20:09:00)
No78441 (NKSH さん) に返信

> 環境と何を作っているかを書くの忘れていて申し訳ございませんでした。
> 環境は.NETです。

何を作っているのかというのは Windows Forms アプリ or WPF アプリ or コンソールアプリ
or ASP.NET Web アプリ or その他の何なのかというこ
とです。

環境というのは OS, .NET, Visual Studio のバージョンなどの情報です。(なお、.NET だと
いうことは「分類:[.NET 全般]」から分かります)


> 質問の内容は、Me._SelectOrderがNothingになってしまうということです。

それは先の私のレスで答えになってませんか? 下に再掲しておきます。

***ここから***
アップされたコードを見る限り、以下の定義以外は見当たらないので、アップされたコード以
外の部分で OrdersClass を初期化してその参照を変数 _SelectOrder に代入することをしてな
ければ Me._SelectOrder は Nothing になるのでは?

Private _SelectOrder As OrderClass
***ここまで***

もし、アップされたコード以外の部分で OrdersClass を初期化してその参照を変数 _SelectOrder
に代入するというようなことをしていて、それでも Nothing になるというのであれば、掲示板
に書いてある情報が全ての回答者にとってその理由が分かるわけはないです。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -