@aspmajor

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

初心者のVB.netの質問

解決したいこと

VB.netでフォームアプリを作成しています。
メソッドで使用した引数を使用して、配列やLISTBOXに引数を変数として代入したいです。
解決方法をご教授ください。初心者で不足等ありましたらそちらもご教授願います。

発生している問題・エラー

出ているエラーメッセージを入力
System.InvalidCastException
  HResult=0x80004002
  Message=型 'System.Char[]' のオブジェクトを型 'System.String[]' にキャストできません。
  Source=frmWordApp
  スタック トレース:
   場所 frmWordApp.Result1.ResAnswer(Object& a, Object b, Object c) (C:\Users\user\source\repos\frmWordApp\frmWordApp\Result1.vb):行 24
   場所 frmWordApp.Form1.Button1_Click(Object sender, EventArgs e) (C:\Users\user\source\repos\frmWordApp\frmWordApp\Form1.vb):行 133
   場所 System.Windows.Forms.Control.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   場所 System.Windows.Forms.Button.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   場所 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   場所 frmWordApp.My.MyApplication.Main(String[] Args) ():行 81







### 該当するソースコード
```言語名
ソースコードを入力
'結果発表用の変数
Dim values1 As String()
Dim values2 As String()
Dim values3 As String()

Public Sub ResAnswer(ByRef a, ByVal b, ByVal c)


    Dim i As Integer
    For i = 0 To 9
        values1 = a.ToCharArray
        values2 = b.ToCharArray
        values3 = c.ToCharArray
    Next

End Sub

自分で試したこと

①values1 = a.ToCharArrayでエラーがでております。
values1に引数aの値を入れたいのですが、エラーがでております。

②できれば
For i = 0 To 9
のiの値を利用して、配列のキーをiとして値を入れたいです。

よろしくお願い致します。

0 likes

4Answer

そもそも何がしたいのですか? そこを書かないとエラーの回避方法だけ答えても(下に一例を書きましたが)解決できないと思いますけど。

はっきり言ってあなたが上の質問に書いたコードはメチャクチャで、何がしたいのか私には理解不能です。3 つの String 型の引数を受け取って、3 つの String 型の配列を作りたいのだろうとは読めますが、そのためのプロセスが質問に書かれたメチャクチャなコードからは全く分かりません

values1 = a.ToCharArrayでエラーがでております。

values1 は String の配列、a は String 型ですよね。で、a.ToCharArray メソッドを適用すると右辺は Char の配列になります。 String の配列の変数 values1 に Char の配列は代入できないということでエラーになっているのです。

例えば a を複数の String に分割してから、それで String の配列を作成し、その配列を values1 に代入するというようなことをすればエラーは回避できますが、それでそもそものやりたいことができますか?

1Like

Comments

  1. 質問者さん、無言ですが、回答に対するフィードバックを書いてください。当たり前のマナーとして。

  2. @aspmajor

    Questioner

    回答ありがとうございます。

    まだ試せておりませんので
    後ほどフィードバッグ致します。

メソッドで使用した引数を使用して、配列やLISTBOXに引数を変数として代入したいです。

ちょっとここがよく分からなかったんですが、やりたいのはListBoxへの「追加」じゃないんですか?「代入」だと、変数に値を設定する事を指しますが。

以下は回答ではないですが、

・質問の概要が判るタイトルを付けてください。
一目見て、質問内容がある程度把握できるタイトルをつけてください。
(例:ListBoxに文字列を追加したい)
「初心者のVB.netの質問」では、開いてみるまで何の質問かさっぱりわかりません。「初心者」とか情報量ゼロなので別につけなくていいです。それを聞いて回答内容が変わる事は通常ありません。

・ソースの変数名やメソッド名は、それが何か判るような名前を付けてください。
a, b, cって何ですか?ResAnswerって何するメソッド何ですか?って聞き返さないといけなくなるので、無駄なやり取りが増えます。データ型も省略せずにきちんと書いてください。
他人が見て意味が伝わるように書くのを意識してください。

0Like

質問がわかりにくく申し訳ありませんでした。
ListBoxに文字列を追加したいということがやりたかったです。
以下コードの STRINGの変数をLISTBOXに追加する形で解消できました。
ありがとうございました。

Dim values1 As String()
Dim values2 As String()
Dim values3 As String()

Public Function ResAnswer(ByRef a, ByVal b, ByVal c)

    Dim str1 As String = a
    Dim str2 As String = b
    Dim str3 As String = b
    fruits1.Add(a)
    fruits2.Add(b)
    fruits3.Add(c)
0Like

Comments

  1. そういう意味不明なコードを載せるのやめませんか?

    あなたは、@radian-jp さんのアドバイスに対し、

    次回以降参考にさせていただきます。

    と言っておきながら、何も変わってないじゃないですか。

Your answer might help someone💌