アクセスできない保護レベルエラーが発生する | VB or C#について教えてください

このQ&Aのポイント
  • VB or C#についてお教え下さい。環境はVS2010です。
  • フォーム(Form1)にテキストボックス(txtBOX)があります。このFormのtxtBOXに対して文字列を入力するには、this.txtBOX.text = "こんにちは"; または Me.txtBOX.text = "こんにちは"; というように、やるのは理解できます。
  • Classを追加して、このクラス(CLASS1)からForm1のテキストボックスに文字列を入力したいと思います。そこで、Form1 f1 = new Form1(); f1.txtBOX.text = "こんにちは"; とやりたかったのですが、そもそもインテリセンスが効きません。さらに、ビルドすると、「Form1.txtBOXはアクセスできない保護レベルになっています。」と表示がされます・・・いったい何が悪く、どこを直せば解決するのでしょうか?
回答を見る
  • ベストアンサー

アクセスできない保護レベルエラーが発生します

VB or C#についてお教え下さい。環境はVS2010です。 フォーム(Form1)にテキストボックス(txtBOX)があります。 このFormのtxtBOXに対して文字列を入力するには、 this.txtBOX.text = "こんにちは"; または Me.txtBOX.text = "こんにちは"; というように、やるのは理解できます。 Classを追加して、このクラス(CLASS1)からForm1のテキストボックスに文字列を入力したいと思います。 そこで、 Form1 f1 = new Form1(); f1.txtBOX.text = "こんにちは"; とやりたかったのですが、そもそもインテリセンスが効きません。さらに、ビルドすると、 「Form1.txtBOXはアクセスできない保護レベルになっています。」と表示がされます・・・ いったい何が悪く、どこを直せば解決するのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

publicやprivate, protectedの違いは理解しておられますか? まだなら、先にそれらの学習をしてください。

fflashing
質問者

お礼

ご回答ありがとうございます。public、protectedなどはサラッと本で読んだ程度です・・・本読み直します。

関連するQ&A

  • [VB.NET] インスタンス生成とインテリセンス

    VB.NETの勉強をしつつ業務開発をしております。 現在、作成したクラスをインスタンス化した際、インテリセンスが表示されず、困っております。 メソッド内で生成したインスタンスからは、インテリセンスが表示されるのですが、クラス直下で生成したインスタンスでは、インテリセンスが表示されないのです。 Namespace MyName   Public Class Class1     Public Sub test1()       Debug.Print("test1呼び出し")     End Sub   End Class End Namespace Public Class Form1   Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load     MyCls.test1() ←×MyNameのインテリセンスでtest1が表示されない     Dim MyCls2 = New MyName.Class1     MyCls2.test() ←○MyNameのインテリセンスでtest1が表示   End Sub End Class インテリセンスは表示されなくても、エラーにはなりません。自分で打ち込めば動作するのですが、共有利用したいので、インテリセンスの説明は表示させたいのです。 インテリセンスとは?というレベルから勉強している超初心者のため、拙い言葉遣いご容赦ください。お知恵をお借りしたく、宜しくお願いします。

  • ACCESS コンボボックス 日付入力VBA

    win10 office365 access365におきまして フォーム Fを開いて そのなかの非連結テキストが コンボボックスになっており そのコンボボックス名をcombo としますとき そこに規定の文字列 これは そのコンボボックスの選択文字列として あるもので たとえば、あかさ この文字列は コンボボックスを開くと 第1列に表示されます 一番左側です を入れたいとき Sub Sample() DoCmd.OpenForm "F", acNormal Form![F]!combo = "あかさ" end sub フォームFは当然開くのですが 非連結コンボボックス comboは 空白のままです Form![F]!combo = "あかさ" ここの部分を Form![F]!combo.column(0) = "あかさ" または Form![F]!combo.column(1) = "あかさ" としても 同様の結果となります ② もうひとつすみませんが テキストボックス コメントテキストに 本日の日付で 4月17日であれば 0417 と入れたいので Forms![F]![コメントテキスト] = Format(Now, mmdd) としますと 2024/04/17 13:02:59 と出てしまいます できるものなら 全角で 0417 と打ち出したいのですが、、 重ねて 恐縮ですが 御教示宜しくお願い致します

  • Access2007 Like と Notlike

    フォームに数個テキストボックスがあり任意の文字列で検索できるようにしていますが、 ”この文字列を含まないもの” という検索もできると検索精度が上がります。 クエリの1つのフィールドの抽出条件に  Like "*" & form!フォーム名!テキストボックス1 & "*" And Not like "*" & form!フォーム名!テキストボックス2 & "*" ということがしたいのですがうまくいきません・・・ (Like と Not Like が混在は無理 というのも理解できるのですが…) form!フォーム名!テキストボックス1 → この部分に直接文字列を記述すると機能するのですが、フォームに入力された文字列を検索 という記述にすると機能しません… フォームのテキストボックスに何も記述されていない時は全部表示するようにしたいです。 こんなことは可能でしょうか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • Visual Basic アクセス範囲外?

    以下のソースコードを Visual Basic で実行したら, 『InvalidOperationException はハンドルされませんでした。』 というエラーが出たのですが,エラーの意味がいまいちよく掴めなくて困っています. Public Class Form1    Dim tc As TestClass = New TestClass    Class TestClass       Sub New()          Form1.ComboBox1.Items.Add("hello world")       End Sub    End Class End Class おそらく範囲外アクセスのようなことだとは思うのですが,Visual Basic 初心者なので対策がよくわかりません. 以下のソースコードは,起動(実行)した時にクラスのコンストラクタが呼び出されて,コンボボックスのリストに文字列を追加するというだけのものなのですが,それで先のエラーが返ってきてしまっています. どのようにコードを書き換えればいいのでしょうか. 条件は『起動時』に文字列をリストに追加することです.

  • Access2010 VBAで文字を数える

    あるデータベースのフォーム内で、テキストボックス内に記載のある任意の文字列の数を数えて変数に格納したいと考えています。 そして、コマンドボタンを押したときに、メッセージボックスで「○件選択しています。」のように表示されるようにしたいと考えています。 色々と検索してみて以下のような記述をしたのですがうまく動いてくれませんでした。(「コンパイルエラー: SubまたはFunctionが定義されていません。」と表示されます。) Dim A As Integer A = Len([txtbox]) - Len(SUBSTITUTE([txtbox], ","))   MsgBox(A & "件の選択しています。") なお、テキストボックス、コマンドボタンは同一のフォーム内においてあります。 また、テキストボックス内で検索したい文字は半角カンマです。 詳しい方がおりましたら、どうぞご教示ください。

  • ACCESS2003のテキストボックスの最大桁数について

    Access2003のテキストボックスには、MaxLengthプロパティがありません。変わりに以下のような、コードで対応しようと試みたのですが、いまいち動きが悪いのです。以下のコードは、最大4桁までテキストボックスに入力可能とします。 Private Sub txtBox_KeyPress(KeyAscii As Integer)   If Len(txtBox.Text) > 3 Then     KeyAscii = 0   End If End Sub 最大入力桁数4桁を実現していますが、4桁入力後『Insert』キーを押下して、上書きモードでの修正ができません。 以下例1はOKですが、例2が実現できません。 例1:1回目新規入力『12』 ⇒ 2回目修正『123』⇒3回目修正『1234』 例2:1回目新規入力『1234』 ⇒ 2回目修正『9999』 VBのMaxLengthプロパティのようなことはできないのでしょうか?

  • form2がボタンを押すと消えてしまう

    vb2010で、作成しています。form1から、form2を呼び出し、okボタンまたは、cancelボタンを押すと、無条件でform2が消えてしまいます。私がしたいのは、form2(パスワード入力ウィンドウ)でテキストボックスにパスワードを入力してokボタンを押して、それが正しい(1234)ときのみform2を消去することです。現在のところ、入力したパスワードが間違っていてもokボタンを押すと、form2は消えてしまいます。 form1側のコードとform2側のコードは以下です。お手数ですが御教示いただけると幸いです。 /////////Form1 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f As New Form2() f.TextBox1.PasswordChar = "*"c '//入力文字をマスクする If f.ShowDialog(Me) = DialogResult.OK Then If f.TextBox1.Text = "1234" Then f.Dispose() End If End If End Sub End Class /////////Form2 Public Class Form2 Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click Dim f As Form1 f = Me.Owner Me.DialogResult = DialogResult.OK End Sub Private Sub btncancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancel.Click Dim f As Form1 f = Me.Owner Me.DialogResult = DialogResult.Cancel End Sub End Class

  • VBで他のアプリケーションを操作する

    VBを使って、たとえばブラウザや適当なアプリケーションのテキストボックスに文字を書いて検索ボタンを押すことはできますか。 ブラウザなどは立ち上げておいて、最大化してテキストボックスの位置がわかっているものとして構いません。 マウスの位置を動かして、ウインドウをクリックして(VBのフォーカスは失われる)、文字列を送り込んで、ボタンを押すということができるのでしょうか。 もちろんVBのFormの中では個々の操作ができることはわかっています。 まるで人が操作しているかのように他のアプリケーションを間接的に操作できるかどうかを教えてください。

  • 「Me」を「Form1」にするとエラーになる理由

    VB2008です。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = "a" Form1.Text = "a" ’←「Form1.Text」に波線ができる。 End Sub End Class というように、 「Me」を「Form1」にすると 「既定のインスタンスからそれ自体を参照できません。'Me' を使用してください。」 となります。 VBAなら「Me」を「Form1」にしてもエラーにならないのに、 どうしてVBだとエラーになるのでしょうか?

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

専門家に質問してみよう