2011-06-26 14 views
2

新しい質問があります。私は、バイナリファイルからリストをロードするコードを持って、私はそれを正しくしたと思うが、私は各変数を独自のテキストボックスに表示する必要があります。これは私が行う方法を見つけることができないティンです。誰でも私を助けたり、どこに情報を見つけることができますか?リスト変数をテキストボックスにバインドする

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Runtime.Serialization.Formatters.Binary; 

namespace test 
{ 

public partial class Form1 : Form 
{ 
    [Serializable] 
    public class ore 
    { 
     public float Titan; 
     public float Eperton; 
    } 
    ore b1 = null; 
    ore b2 = null; 



    public Form1() 
    { 
     InitializeComponent(); 

     b2 = new ore(); 
     b1 = new ore(); 
    } 

    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

     float tempFloat; 


     if (float.TryParse(textBox1.Text, out tempFloat)) 
     { 
      b1.Titan = tempFloat; 
     } 
     else 
      MessageBox.Show("uh oh"); 



    } 


    private void textBox2_TextChanged(object sender, EventArgs e) 
    { 
     float tempFloat; 
     if (float.TryParse(textBox1.Text, out tempFloat)) 
     { 
      b2.Eperton = tempFloat; 
     } 
     else 
      MessageBox.Show("uh oh"); 


    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     List<ore> oreData = new List<ore>(); 
     oreData.Add(b1); 
     oreData.Add(b2); 

     FileStream fs = new FileStream("ore.dat", FileMode.Create); 
     BinaryFormatter bf = new BinaryFormatter(); 
     bf.Serialize(fs, oreData); 
     fs.Close(); 
    } 

    private void textBox3_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void textBox4_TextChanged(object sender, EventArgs e) 
    { 

    } 

    List<ore> books = new List<ore>(); 
    private void button2_Click(object sender, EventArgs e) 
    { 
     FileStream fs = new FileStream("ore.dat", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 
     List<ore> books = (List<ore>)bf.Deserialize(fs); 
     fs.Close(); 

     if (books.Count > 1) 
     { 
      textBox3.Text = books[0];//update the first text 
      textBox4.Text = books[1];//update the second text 
     } 
    } 
} 

}

ASP.NETで
+0

テキストボックスは静的にすることができます。合計は9つしかありません。また、リストは9つの変数で更新され、テキストボックスはバイナリファイルと表示を読み取る必要があります。例えば、テキストボックス1はリスト変数1などを表示し、 – doc

+0

を表示し、テキストボックスに表示されている値を追加するには浮動小数点数を追加しますが、正しい場合はそれを解析できます。 – doc

+0

大文字小文字を区別する方法textBox3.Text =本[0];私はtextBox3.Text = float.Parse(books [0]);を試しました。しかし、それはまったく動作しませんでしたか?私は浮動小数点を表示するテキストボックスが必要です。エラー1の上の現在のコードでこのエラーが発生します。暗黙のうちに 'test.Form1.ore'を 'string'に変換することはできません。 – doc

答えて

0

Windowsフォーム:

1 - 必要な場合は、別の方法でそれを使用できるように、クラスレベルであなたのリストの本を定義します。..

2 -

public clas MyForm : Form 
{ 
    List<ore> books = new List<ore>();//define at the class scope 

    private void button2_Click(object sender, EventArgs e) 
    { 
     FileStream fs = new FileStream("ore.dat", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 
     books = (List<ore>)bf.Deserialize(fs); 
     fs.Close(); 

     if (books.Count > 1) 
     { 
      textBox3.Text = books[0];//update the first text 
      textBox4.Text = books[1];//update the second text 
     } 
    } 
} 

あなたの場合ブックリストが変更されたときに追加または削除するリストボックスのコレクションが必要です。これは別の話です。コメントを書いたり質問を更新したりしてください。

+0

だから私はあなたが正しく理解する必要があります – doc

+0

おっと...私は公共クラスのリストが必要でしょうか?どのようにクラスレベルでリストを定義するのかわからない。 – doc

+0

メソッドレベルの上のスコープで定義するだけです。つまりこれはメソッドであり、リストはメソッドスコープで定義されます: 'private void MyMethod(){List myList = new List/*これはメソッドレベルであり、他のクラスメソッドでは使用できません* /} 'これはクラスレベルにあります:' class MyForm:Form {List myList = new List ();/*これはクラススコープであり、すべてのメソッドに有効です*// * private void MyMethod(){}/*別のメソッド*/* /} ' –

-1

: あなたのフォームを作成するために、ASP.NET FormViewオブジェクトを使用して、フォームにデータセットを結合してのDataBindを呼び出すことができます。

<asp:FormView runat="server" ID="form1"> 
    <ItemTemplate> 
     <asp:TextBox Text='<%# Bind("") %>'></asp:TextBox> 
    </ItemTemplate> 
</asp:FormView> 
+0

ファイルからリストをロードし、テキストボックスにリスト – doc

+0

-1 OPは彼/彼女がASP.NETを使用していることを示していませんでした。 –

0

解決策の1つは、Textboxの束の代わりにListViewコントロールを使用することです。 Listviewのテンプレートで、Textboxコントロールを配置し、それをListオブジェクトにバインドします。

また、テキストボックスコントロールをオンザフライで作成します。

for(int i=1; i<=books.Count; i++) 
{ 
    var textBoxCtrl = new TextBox() 
    textBoxCtrl.ID = "TextBox"+i.toString(); 
    textBoxCtrl.Text = books[i]; 

    Page.Controls.Add(textBoxCtrl); 
} 
関連する問題