• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#のプログラミングで困ってます。)

C#のプログラミングで困ってます

このQ&Aのポイント
  • C#のプログラミングで困っている専門学生です。明日までの課題のためにWebフォームでコミュニティーの作成をしています。トップ画面には書き込まれたトピックのタイトルをリンクで表示したいです。
  • トップ画面のLabelに表示されるタイトルは5件までに制限し、[次へ]ボタンを押すと6件目以降のタイトルを表示できるようにしたいです。
  • どこにコードを追加すればよいかわからないため、ご教授いただけると助かります。お力添えのほどよろしくお願いします。

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

  • ベストアンサー
回答No.2

まず、肝心のところ、次のような感じかな? iとsrを、次へボタンのメソッドで読める場所に保存して、ボタンのクリックイベントに、下記同様の処理を追加。  while (sr.Peek() != -1) { if(i<5){  msgtext = sr.ReadLine().Split(',');  test += "<tr><td>" + msgtext[3] + "<a href =\"WebForm1.aspx?id=" + i + "\">" + msgtext[0];  i = i + 1; }else break; } または、  for(i=0;i<5;i++){   if(sr.Peek() != -1){    msgtext = sr.ReadLine().Split(',');    test += "<tr><td>" + msgtext[3] + "<a href =\"WebForm1.aspx?id=" + i + "\">" + msgtext[0];   }else break;  } で、動的にボタンを作るのは、とても説明が面倒なので、参考URLを見てみてください。 自分なら、予めフォームに貼っておくけどね。

参考URL:
http://support.microsoft.com/kb/815780/ja
noname#163915
質問者

お礼

本当にありがとうございます。 大変参考になりました。 また機会がありましたらお力添えお願い新さうm(__)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

こんばんは。 >1、トップ画面のLabelに書き込まれたタイトルが5件だけ表示させたい トップ画面のLabelはどこに行ったの? トップ画面がどのように表示されているのか、全然わからないです・・・。 これだけでは難しい・・・。

noname#163915
質問者

お礼

説明不足でしたが、注意していただいてありがとうございました。

noname#163915
質問者

補足

トップ画面の中央にあるLabel1に書き込まれたデータを書き足すようにしてます。 その下に次へボタンを作りたいと思ってます。 上から、タイトル、Label1、次へといった感じのレイアウトになってます。 現状だと書き込まれた分だけ表示されます。 これをどうにか5件ずつ表示できたらいいなと思ってます。 初心者で説明が下手なのに返答いただけて感謝します><

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ASP.NET C#で

    ASP.NET C#で重複登録されないようにStreamReaderで読み込んで確認後重複がなければ StreamWriterで書き込むというプログラムを書いていたのですが、重複確認もcsvファイルへの書き込むもエラーが表示されて出来ませんでした。 sr.Close();の位置を変えても変わりませんでした。 エラー内容 ・System.ObjectDisposedException はユーザー コードによってハンドルされませんでした。 Message=閉じている TextReader から読み取ることはできません。 他にも、他のプロセスに使われているため・・・と言ったエラーも表示されます。 ソースコード protected void Button1_Click(object sender, EventArgs e) { string Searchid = TextBox1.Text;//商品コード //ファイルの存在を確認 if (!File.Exists(MapPath(".") + "\\Data\\product.csv")) { Label2.Text = "データ登録先が存在しません。管理者に連絡してください。"; return; } this.Label1.Text = string.Empty; //確認ここまで StreamReader sr = new StreamReader(MapPath(".") + "\\Data\\product.csv", true); while (sr.Peek() != -1) { string date = sr.ReadLine(); char[] delimiter = new char[] { ',' }; string[] item = date.Split(delimiter); string id = item[0]; sr.Close(); if (Searchid.Equals(id)) { Label1.Text = "既に存在する商品コードです。別の商品コードを指定してください。"; } else { Session["scode"] = TextBox1.Text;//商品コード Session["sname"] = TextBox2.Text;//商品名 Session["price"] = TextBox3.Text;//価格 StreamWriter sw = new StreamWriter(MapPath(".") + "\\Data\\product.csv", true, Encoding.GetEncoding("Shift_jis")); sw.WriteLine(TextBox1.Text + "," + TextBox2.Text + "," + TextBox3.Text);//商品コード+商品名+単価 sw.Close(); Label1.Text = "正常に登録出来ました。"; } } } どのようにしたら実行出来るのでしょうか? 教えて下されば幸いです。

  • VB2008

    VB初心者です、よろしくお願いいたします。 現在、VB2008を使い、顧客名簿を作成しています。 前回の質問で、テキストファイルのファイル名だけを取得する方法は分かったのですが、そのファイルの内容をテキストボックスに表示する方法がうまくいきません。 ファイルの内容は 1行目→名前 2行目→メールアドレス 3行目→郵便番号 4行目→住所 5行目→購入した商品 をそれぞれ、textbox1~5に表示させたいと思っています。 書籍などで調べた結果 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim totalcount As Integer Dim oneline As String Dim sr As System.IO.StreamReader sr = New System.IO.StreamReader("C:hogehoge\" & ComboBox1.Text & ".txt") oneline = sr.ReadLine() sr.Close() Dim skipline As Integer Dim r As Random = New Random() skipline = r.Next(totalcount) sr = New System.IO.StreamReader("C:hogehoge\" & ComboBox1.Text & ".txt") Dim i As Integer = 0 Do While i < skipline sr.ReadLine() i += 1 Loop oneline = sr.ReadLine() sr.Close() TextBox1.Text = oneline TextBox2.Text = (skipline + 1).ToString() End Sub このような記述になりました。 textbox1には問題なく名前が表示されますが、textbox2には"1"と表示されてしまいます。 すみませんが、修正箇所を教えていただけませんか? よろしくお願いいたします。

  • C++/CLIでのDataGridViewの使い方

    以前に質問させていただいたのですが、要点を得ていなかったため再度質問させていただいきます。 VC++2005のC++/CLIでプログラムを作成しています。 CSVファイルから内容を読み込み、DataGridVeiwに表示させたいと考えています。 CSVファイルを配列に読み込んで、表示するところまでは出来ています。 以下CSVファイルを読み込んで、コンソール出力するプログラムの一部 int i; StreamReader^ sr=gcnew StreamReader("hoge.csv"); String^ text=sr->ReadToEnd(); array<String^>^ line=text->Split(gcnew array<String^> {"\r\n", "\r", "\n"},StringSplitOptions::RemoveEmptyEntries); array<array<String^>^>^ table= gcnew array<array<String^>^>(line->Length); for (i=0; i<line->Length; i++) { table[i]=line[i]->Split(','); } for each (array<String^>^ output in table){ for(i=0; i<output->Length; i++){ Console::Write(output[i]); //行出力 } } 初歩的なことだとは思うのですが・・・ コンソール出力部分をDataGridViewで出力表示させるには どのように書けばいいでしょうか。 よろしくお願いします。

  • Visual Sutudio 2003で、文字を反転させるプログラムが正しく動きません。

    Visual Sutudio 2003で、困っています。 TextBox1に、文字を入力してButton1をクリックすると、入力された文字が反転されてLabel3に、表示されるプログラムを作ってみたのですが、上手く動きません。 例えば、「TextBox1」と入力してボタンをクリックすると、「1xoBtxeT」と表示させたいのですが、「1ote」と一文字置きに表示されてしまいます。 「Button1をクリックした時のプログラム」 Dim moji, kekka As String Dim i As Integer Label3.Text = "" moji = TextBox1.Text Label3.Text = moji.Substring(moji.Length - 1, 1) For i = 2 To moji.Length  Label3.Text &= moji.Substring(moji.Length - i, 1)  i = i + 1 Next End Sub 正しく表示させるには、どうすればいいのでしょうか?分かる方、宜しくお願いします。

  • 【C# 2010】 テキストへのドラック&ドロップ

    VisualStudio C#2010 Express の環境で、テキストボックスにエクスプローラからフォルダを指定(複数)して、ドラック&ドロップすると、そのフォルダのフルパスをテキストボックスへ表示させるアプリケーションを作成しております。 調べながら作成し、フォルダのフルパスをテキストボックスへ表示させられるようになったのですが、わからない点として、複数のフォルダを指定しても、テキストボックスに表示されるのは1フォルダ分のフルパスだけになってしまうという点です。 テキストボックス側のプロパティで、複数行で表示させる設定(Multiline)は有効(True)にしてありますし、ユーザーがドラックしたデータを受け入れるかの設定(AllDrop)も有効にしてあります。 その他、気づいた点として、☆ ドロップイベントの配列(pass)には指定したフォルダ分のフルパスが格納されていますが、textbox1.Text = pass[i] の部分で全てのフルパスがテキストに表示されません。 原因を考えましたが、どうしてもわからなかったので、どなたかお分かりになられる方がいらっしゃい ましたら、ご教授のほどお願いできますでしょうか? 何卒、よろしくお願いいたします。 ----------------------------------------------------------------------------- public Form1() { InitializeComponent(); this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); } // ☆ ドラッグイベント private void textBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.All; else e.Effect = DragDropEffects.None; } // ☆ ドロップイベント private void textBox1_DragDrop(object sender, DragEventArgs e) { string[] pass = (string[])e.Data.GetData(DataFormats.FileDrop, false); int i; for (i = 0; i < pass.Length; i++) { textBox1.Text = pass[i]; } }

  • VB TEXT読み取りについて

    このコードでのデバックは成功したのですが、TEXTBOX1にファイルネーム C:\Users\???\Documents\???と入力しても’パスが拒否されました’と出てしまいます。 どう解決したらよいのでしょうか、宜しくお願いします。 Public Class Form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sr As System.IO.StreamReader = Nothing Try Dim file As String = TextBox1.Text sr = New System.IO.StreamReader(file, System.Text.Encoding.GetEncoding("shift_jis")) Dim doc As String = "" Do Until sr.EndOfStream doc &= sr.ReadLine & vdcrlf() Loop TextBox2.Text = doc Catch ex As Exception MessageBox.Show(ex.Message, "read") Finally If sr IsNot Nothing Then sr.Close() sr.Dispose() End If End Try End Sub Private Function vdcrlf() As String Throw New NotImplementedException End Function End Class

  • C#のタイマーについて

    タイマーのプログラムを作っています。 namespace WindowsApplication3 { public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; protected System.Windows.Forms.Label label5; protected System.Windows.Forms.Label label6; protected System.Windows.Forms.Button button1; protected System.Windows.Forms.Button button2; protected DateTime dt; protected DateTime recTime; private System.Windows.Forms.GroupBox groupBox1; protected System.Windows.Forms.RadioButton radioButton1; protected System.Windows.Forms.RadioButton radioButton2; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); DateTime dt; dt=DateTime.Now; string a="00"; string b=a; string c=a; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); label5.Text = string.Format("{0}時{1}分{2}秒",a,b,c); label6.Text = string.Format("{0}時間{1}分{2}秒",a,b,c); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // dt=DateTime.Now; } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 <<  文字数オーバーのため 省略>> /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button2_Click(object sender, System.EventArgs e) { Application.Exit(); } protected void timer1_Tick(object sender, System.EventArgs e) { DateTime dt; dt=DateTime.Now; label4.Text = string.Format("{0}時{1}分{2}秒", dt.Hour, dt.Minute,dt.Second); } protected void button1_Click(object sender, System.EventArgs e) { DateTime recTime; recTime=DateTime.Now; TimeSpan k; k=dt-recTime; label5.Text=string.Format("{0}時{1}分{2}秒",recTime.Hour,recTime.Minute,recTime.Second); label6.Text=string.Format("{0}秒",k.Seconds); } } } このプログラムでは ボタン1をクリックするとlabel6に経過時間 label5に記録時間を出力させたいのですが、TimeSpanクラスが上手く使えず、経過時間がマイナスになってしまいます。アドバイスお願いします。

  • visual basicのプログラミングについて

    体重が標準体重の0.9倍以下の時は痩せすぎ、0.9倍を超えて、1.1倍以下の時は標準、1.1倍を超えた時は太りすぎと表示したいんですけど、できないんです。 Dim sintyo, taiju, hyojun As Integer sintyo = Val(TextBox1.Text) taiju = Val(TextBox2.Text) hyojun = (sintyo - 100) * 0.9 Label5.Text = hyojun Select Case taiju Case taiju <= hyojun * 0.9 Label6.Text = "やせ過ぎ" Case hyojun * 0.9 < taiju <= hyojun * 1.1 Label6.Text = "標準" Case hyojun * 1.1 < taiju Label6.Text = "太り過ぎ" End Select 自分でこう入力したんですけど、label6が変化しません。わかる人がいたら至急回答お願いします。

  • C#で動的に配置したコントロール

    はじめまして 開発歴1年未満の開発者ですがよろしくお願いします。 開発環境 Visual Studio 2008 C# ASP.NET protected void Page_Load(object sender, EventArgs e) { TextBox TextBox = new TextBox(); TextBox.ID = "TextBox1"; TextBox.Text = "C# ASP.NET"; form1.Controls.Add(TextBox); } protected void Button1_Click(object sender, EventArgs e) { string strTextBox1 = ??????? } と上記のように読み込み時に、テキストボックスのみを動的に配置し、デザイナで配置したのボタンを押した際に、テキストボックスに入力された値を、取得したいのですが、方法がわかりません・・・ お忙しいとは、思いますがご回答よろしくお願いします。

  • VC++2005 StreamReader

    以前、ここでテキストボックスに保存してあるテキストファイルの表示方法を教えていただきました。 そのときの回答では、読み込みたいファイル名をまずテキストボックスに入れてStreamReaderを使って他のテキストボックスに表示するというプログラムを教えていただきました。 そこで今回質問したいことは、最初にファイル名をテキストボックスに入れずにファイルを表示するのはどうすればよいのかということです。 以下に現在使っているプログラムを書きます。 よろしくお願いします。 textBox1->Text = "p12.txt"; ←この部分について StreamReader^ streamReader = gcnew StreamReader(textBox1->Text); textBox2->Text = streamReader->ReadToEnd();