2017-12-07 10 views
1

あなたが助けることができます - 私はプログラムでボタンを作成しました& richtextbox。C#プログラムで作成されたボタン - プログラムで作成されたテキストボックスを有効にします

// Button to Edit 
Button butEditToDo = new Button(); 
butEditToDo.Location = new Point(285, 10); 
butEditToDo.Size = new System.Drawing.Size(25, 25); 
butEditToDo.BackColor = Color.Transparent; 
butEditToDo.FlatStyle = FlatStyle.Flat; 
butEditToDo.FlatAppearance.BorderSize = 0; 
butEditToDo.FlatAppearance.MouseOverBackColor = Color.FromArgb(244, 244, 244); 
butEditToDo.Cursor = Cursors.Hand; 
butEditToDo.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.Edit_25)); 
pnlPendingNote.Controls.Add(butEditToDo); 

// Pending Nane + Tag 
RichTextBox rxtNotes = new RichTextBox(); 
rxtNotes.Size = new System.Drawing.Size(317, 68); 
rxtNotes.Location = new Point(3, 37); 
rxtNotes.Text = (read["notNote"].ToString()); 
rxtNotes.ReadOnly = true; 
rxtNotes.BorderStyle = BorderStyle.None; 
rxtNotes.DetectUrls = true; 
rxtNotes.BackColor = Color.FromArgb(244, 244, 244); 
pnlPendingNote.Controls.Add(rxtNotes); 

これまでにButEditToDo_Clickをクリックしたときに、右クリックしてもらうことができます。

このボタンをクリックすると、リッチテキストボックスが有効になります。ボタンをもう一度クリックすると、データベースを更新したいと思います。

ボタンをクリックして:

private void ButEditToDo_Click(object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 

    for (int i = 1; i < pendingcounter; i++) 
    { 
     if (btn.Name == ("PenNote" + i)) 
     { 
      break; 
     } 
    } 
} 

は、私はすべてのデータベースとの良好なよ、あなたはボタンを有効にしてください役立つことを願って。

ありがとうございます。

編集ワン

@Ed - ありがとうございました。 イメージを参照してください。 enter image description here

私が達成したいこと - ツールアイコンをクリックすると、RichTextBoxが有効になります。 最初のパネルのツールをクリックすると、R_TextBoxが有効になり、テキストを編集できます。 アイコンが変わり、もう一度クリックするとデータベースに保存できます。

あなたにはもっと理にかなった希望です。

+0

私の答えは、あなたが必要とすることをする方法を示しました。あなたが最初に言及しなかったより多くのコントロールが関わっている場合、それは一般化することができます。同じ原則が適用されます。完全にテストされたデバッグ済みの実装を提供するつもりはなく、あなたの説明が私にとって意味をなさない場合でもそうすることには関心がありません。残念ながら、誰かがあなたのためにコードを書くことを望んでいるようです。私に関心のないコーディングは、US $ 200 /時間(特別な膨らんだ休日のレート)です。あなたがそれを買えるかどうか私に教えてください。最低3時間。 –

+0

私はあなたのコードを書くことを意味しませんでした - 私はあなたの助けを借りてソリューションを実装しました。 - 私はちょうどあなたの最後の文章のように、あなたが何か他のことを考えたときに少しの情報を追加しました。 私はC#を学んでいます。私が必要とするのは理解の助けです - 私はhtml、cssにもっと慣れています。 – Azmodan

答えて

1

ただ、ボタンに物事をするイベントハンドラを与えます。ラムダを使用して、RichTextBoxへのローカル参照を参照できるようにします。

Button butEditToDo = new Button(); 
    // ...snip... 
    RichTextBox rxtNotes = new RichTextBox(); 
    // ...snip... 

    butEditToDo.Click += (sender, args) => 
    { 
     CycleNoteState(rxtNotes); 
    }; 

ここでは、イベントハンドラの内容について説明します。これをすべてイベントハンドラに入れることができますが、コードはこのように読みやすくなります。 CycleNoteStateはあまり良い名前ではありませんが、私はあなたのプログラムのセマンティクスについてはっきりしていません。

私は、連続したクリックでボタンが何をするのか誤解しているかもしれません。これよりも複雑な場合は、状態列挙型などを導入することができます。私に知らせてください、そして、私たちはそれを理解するでしょう。

private void CycleNoteState(RichTextBox rtb) 
{ 
    if (!rtb.Enabled) 
    { 
     rtb.Enabled = true; 
    } 
    else 
    { 
     // Do save stuff here 
    } 
} 
関連する問題