お手伝いができたら幸いです。 データベースから読み込まれた豊富なテキストボックスとテキストをプログラムで作成しました。このテキストは、プログラムで作成された別のボタンがあるパネルに追加されます。表示されたようC#プログラマチックに作成されたリッチテキストボックスを作成し、ボタンからテキスト値を取得する
:偉大な作品
private void GetPending()
{
SQL = "SELECT notID,notNote FROM Notes WHERE notisActive = @notisActive AND notUser = @notuser ";
y = 3;
using (SqlConnection SQLCon = new SqlConnection(ConnectionString))
{
SqlCommand cmd = new SqlCommand(SQL, SQLCon);
cmd.Parameters.Add(new SqlParameter("notIsActive", "Pending"));
cmd.Parameters.Add(new SqlParameter("notUser", lblUserName.Text));
try
{
SQLCon.Open();
using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
//Main Panel
Panel pnlPendingNote = new Panel();
pnlPendingNote.Size = new System.Drawing.Size(315, 110);
pnlPendingNote.Location = new Point(3, y);
pnlPendingNote.BorderStyle = BorderStyle.FixedSingle;
pnlPendingNote.BackColor = Color.FromArgb(244, 244, 244);
// Button to Activate To Do
Button butActivateToDo = new Button();
butActivateToDo.Location = new Point(250, 10);
butActivateToDo.Size = new System.Drawing.Size(25, 25);
butActivateToDo.BackColor = Color.Transparent;
butActivateToDo.FlatStyle = FlatStyle.Flat;
butActivateToDo.FlatAppearance.BorderSize = 0;
butActivateToDo.FlatAppearance.MouseOverBackColor = Color.FromArgb(244, 244, 244);
butActivateToDo.Cursor = Cursors.Hand;
butActivateToDo.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.Activate_25));
pnlPendingNote.Controls.Add(butActivateToDo);
RichTextBox rxtNotes = new RichTextBox();
rxtNotes.Size = new System.Drawing.Size(307, 68);
rxtNotes.Location = new Point(3, 37);
rxtNotes.Text = (read["notNote"].ToString());
rxtNotes.ReadOnly = true;
rxtNotes.BorderStyle = BorderStyle.None;
rxtNotes.BackColor = Color.FromArgb(244, 244, 244);
pnlPendingNote.Controls.Add(rxtNotes);
pnlPendingNote.Name = "PenNote" + pendingcounter;
pnlPendingNote.Tag = read.GetInt32(0);
butActivateToDo.Name = "PenNote" + pendingcounter;
butActivateToDo.Tag = read.GetInt32(0);
rxtNotes.Name = "PenNote" + pendingcounter;
rxtNotes.Tag = read.GetInt32(0);
// Increase by 1
pendingcounter++;
// Create Double Click
butActivateToDo.Click += new EventHandler(NewbutActivateToDo_Click);
pnlPendingNote.DoubleClick += new EventHandler(NewPendingButton_DoubleClick);
// Add Pending Note size inside Panding Panel
pnlPending.Controls.Add(pnlPendingNote);
y = y + 112;
}
}
}
catch (System.Exception Error)
{
MessageBox.Show(Error.Message); // display error - if unable to connect to server
}
SQLCon.Close(); // close the sql connection
}
}
- 私は、テキストボックスとボタンを作成し、私のパネルを持っています。
は、私は、このコードを持っている:
private void NewbutActivateToDo_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
RichTextBox rxtNotes = (RichTextBox)sender;
for (int i = 1; i < pendingcounter; i++)
{
if (btn.Name == ("PenNote" + i))
{
MessageBox.Show(rxtNotes.Text.ToString());
break;
}
}
}
程度に働いている - それは私が私がタグに格納されているIDを取得&をクリックしたものをパネルのを取得します。
次テキストボックスからテキスト値を取得します。 だから私は
RichTextBox rxtNotes = (RichTextBox)sender;
を追加している、これはエラーをスローします:
{ "型のオブジェクトをキャストすることができません 'System.Windows.Forms.Button' 'System.Windows.Forms.RichTextBox' を入力します。 "}
" ActivateToDo "ボタンをクリックすると、RtxtBoxの値を取得したいと思います。
希望これは、意味になり -
おかげ
「Click」イベントの送信者は、「ボタン」です。そのeentハンドラで 'RichTextBox'を使用するには、' RichTextBox'を作成して 'Name'プロパティに名前を割り当て、' var rtb =(RichTextBox)this.Controls.Find( "name"、true)を使用します。 FirstOrDefault(); ' –