質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

2回答

18115閲覧

.aspxコードに直接記述したボタンが.aspx.vbで認識されない

syosenn

総合スコア8

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

1クリップ

投稿2017/01/20 15:35

編集2017/01/20 16:34

###前提・実現したいこと
当方、VB6は経験はあるが、.netは初心者
Vb.Net ASP.NETのVisualStudio2015
デザインではなく、ソースの状態で、
他フォーム(A.aspx)からコピーしたボタンを、B.aspxに張り付けて、
B.aspx.vbでボタンクリックイベントとして

Protected Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click

という風に、
btnTest のクリックイベントをコーディングしたいです。
対処方法を教えてください。

情報は下記のとおりです。
###ソースコード例
A.aspx側
<asp:Panel ID="pnlEntryA" runat="server" cssclass="section">

<table><tbody ><tr><td> <asp:Button ID="btnTest" runat="server" /> ↑の1行をコピーし、

B.aspx側の
<asp:Panel ID="pnlEntryB" runat="server" cssclass="section">

<table><tbody ><tr><td> <asp:Button ID="btnTest" runat="server" /> ↑ここに張り付け。

###発生している問題・エラーメッセージ
B.aspx.vb
で、
btnTestのクリックイベントを探したのですが、
btnTest自体が認識されていません。

###試したこと
B.aspx.vbに、
Protected Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click
と試しに直接入力しましたが、

Handles btnTest.Click
のbtnTestが
「名前空間では有効でないステートメントです。」
とエラー表示されます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Web サイトプロジェクト or Web アプリケーションプロジェクトのどちらで作ってますか?([ファイル(F)]⇒[新しい Web サイト(W)...]で作るのが前者、[ファイル(F)]⇒[新しいプロジェクト(P)...]で作るのが後者)

たぶん、Web アプリケーションプロジェクトであろうと想像して・・・(違っていたらその旨連絡ください)

最初に、[追加(D)]⇒[新しい項目(W)...]で Web フォームを B.aspx という名前で追加すると、以下の 3 つのファイルが自動生成されるはずです。(以下は VS2010 Pro で作っていますので、VS2015 では若干違うと思いますが、基本的なところは同じはずです)

B.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="B.aspx.vb" Inherits="WebApplicationVB.B" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>

B.aspx.designer.vb

'------------------------------------------------------------------------------ ' <自動生成> ' このコードはツールによって生成されました。 ' ' このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 ' コードが再生成されるときに損失したりします。 ' </自動生成> '------------------------------------------------------------------------------ Option Strict On Option Explicit On Partial Public Class B '''<summary> '''form1 コントロール。 '''</summary> '''<remarks> '''自動生成されたフィールド。 '''変更するには、フィールドの宣言をデザイナー ファイルから分離コード ファイルに移動します。 '''</remarks> Protected WithEvents form1 As Global.System.Web.UI.HtmlControls.HtmlForm End Class

B.aspx.vb

Public Class B Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub End Class

B.aspx.designer.vb の Partial Public Class B の Partial がキモです。B.aspx にコントロールを追加すると同時に、B.aspx.designer.vb にコントロールの定義が自動的に追加されるので、B.aspx.vb のコードでそのコントロールを参照できるという仕組みになっています

例えば、質問者さんの質問文にある <asp:Button ID="btnTest" runat="server" /> を B.aspx にコピペすると、B.aspx.designer.vb の Partial Public Class B に自動的に以下のコードが追加されます。

'''<summary> '''btnTest コントロール。 '''</summary> '''<remarks> '''自動生成されたフィールド。 '''変更するには、フィールドの宣言をデザイナー ファイルから分離コード ファイルに移動します。 '''</remarks> Protected WithEvents btnTest As Global.System.Web.UI.WebControls.Button

なので、B.aspx.vb の Public Class B の中で btnTest が参照でき、イベントハンドラもデザイナで追加できるようになるはずです。

質問者さんのケースでそれができないというのは、上記のプロセスとはどこか違うところがあるからでしょう。どこが違うかよく調べてください。

#Web サイトプロジェクトでは B.aspx.designer.vb が Visual Studio 上に出てきませんが裏で作られてます。

#Web サイトプロジェクト、Web アプリケーションプロジェクトの違いについては以下の記事を見てください。

Web アプリケーション プロジェクトと Web サイト プロジェクト
https://msdn.microsoft.com/ja-jp/library/dd547590(v=vs.100).aspx

投稿2017/01/21 03:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

外していると思いますが

  • ビルドし直してみる
  • B.aspxに<%@ Page にLanguage="vb"、CodeBehind="B.aspx.vb"の記述があるか
  • btnTest_Clickのコードを書く場所がSystem.Web.UI.Pageを継承したPublic Class Bの中に書こうとしているか

を確認してみる

投稿2017/01/20 21:01

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問