回答編集履歴

2 補足として追記

dodox86

dodox86 score 8771

2017/11/06 16:39  投稿

Windows FormアプリケーションのTextBoxならば、
`textBox.1.Text = str; `
で充分です。ポインターで扱う必要はなく、fixedステートメントを使う必要もありません。
```C#
private void button1_Click(object sender, EventArgs e)
{
   string str = "Hello";
   // textBox1 は System.Windows.Forms.TextBoxクラス
   textBox1.Text = str;
}
```
---
**追記**:理由があってポインターを使っているとのことでしたので追記しました。
最終的にどのように使われるかを推測しかねているのですが、テキストボックスのテキストをセットするプロパティ`TextBox.Text`はstring(System.String)型のプロパティなので、キャストしてセットできる部分では無いです。
元のstringをchar* でポインターを介して操作した後にTextBox.Text にセットすれば目的を達せられるのではないでしょうか。
最終的にどのように使われるかを推測しかねているのですが、テキストボックスのテキストをセットするプロパティ`TextBox.Text`はstring(System.String)型のプロパティなので、キャストしてセットできる部分では無いです。元のstringをchar* でポインターを介して操作した後にTextBox.Text にセットすれば目的を達せられるのではないでしょうか。
あるいは`textBox1.Text = new string(p_str);` の1行でいいかもしれません。
質問者様の使われ方に合致しているか分かりませんが、以下、例です。元のstr を編集してtextBox1にセットし、その文字列をもとにstr2を生成して編集し、textBox2にセットします。
```C#
private unsafe void button1_Click(object sender, EventArgs e)
{
   string str = "1234567890";
   string str2 = null;
   fixed (char* p_str = str)
   {
       // ポインターを経由してstrを編集
       *(p_str + 0) = 'A';
       *(p_str + 1) = 'B';
       // 編集後のstrの内容を用いてSystem.String(char *)のコンストラクタで生成
       str2 = new string(p_str);
       fixed (char* p_str2 = str2)
       {
           // str2をポインター経由で編集
           *(p_str2 + 2) = 'C';
           *(p_str2 + 3) = 'D';
       }
   }
   // str == "AB34567890"
   textBox1.Text = str;
   // str2 == "ABCD567890"
   textBox2.Text = str2;
}
```
以下のようになります。
![イメージ説明](235e940948670da258c933cb4f62f767.png)
1 質問内容に合致するよう追記

dodox86

dodox86 score 8771

2017/11/06 16:18  投稿

Windows FormアプリケーションのTextBoxならば、
`textBox.1.Text = str; `
で充分です。ポインターで扱う必要はなく、fixedステートメントを使う必要もありません。
```C#
private void button1_Click(object sender, EventArgs e)
{
   string str = "Hello";
   // textBox1 は System.Windows.Forms.TextBoxクラス
   textBox1.Text = str;
}
```
```
---
**追記**:理由があってポインターを使っているとのことでしたので追記しました。
最終的にどのように使われるかを推測しかねているのですが、テキストボックスのテキストをセットするプロパティ`TextBox.Text`はstring(System.String)型のプロパティなので、キャストしてセットできる部分では無いです。
元のstringをchar* でポインターを介して操作した後にTextBox.Text にセットすれば目的を達せられるのではないでしょうか。
質問者様の使われ方に合致しているか分かりませんが、以下、例です。元のstr を編集してtextBox1にセットし、その文字列をもとにstr2を生成して編集し、textBox2にセットします。
```C#
private unsafe void button1_Click(object sender, EventArgs e)
{
   string str = "1234567890";
   string str2 = null;
   fixed (char* p_str = str)
   {
       // ポインターを経由してstrを編集
       *(p_str + 0) = 'A';
       *(p_str + 1) = 'B';
       // 編集後のstrの内容を用いてSystem.String(char *)のコンストラクタで生成
       str2 = new string(p_str);
       fixed (char* p_str2 = str2)
       {
           // str2をポインター経由で編集
           *(p_str2 + 2) = 'C';
           *(p_str2 + 3) = 'D';
       }
   }
   // str == "AB34567890"
   textBox1.Text = str;
   // str2 == "ABCD567890"
   textBox2.Text = str2;
}
```
以下のようになります。
![イメージ説明](235e940948670da258c933cb4f62f767.png)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る