-2

このボタンのクリック内でこれEditQuestionMaster(int qid_value)を渡すことができますか、はいの場合、適切にできるようにするにはどうすればよいですかqid_valueprivate void button1_Click(object sender, EventArgs e)UpdateQuestion

public partial class EditQuestionMaster : Form
    {
        DbHandling db = new DbHandling();
        public EditQuestionMaster(int qid_value)
        {
            InitializeComponent();
            string subNtop = db.GetEditSubNTopic(qid_value);
            string[] subNtopData = subNtop.Split('~');
            cmbSubject.Text = subNtopData[2];                
        }
private void button1_Click(object sender, EventArgs e)
        {       

            int qid = ; //here i want the value of int qid_value
            string AnsOp = "";
            if (radioButton1.Checked == true)
                AnsOp = "1";
            else if (radioButton2.Checked == true)
                AnsOp = "2";
            else if (radioButton3.Checked == true)
                AnsOp = "3";
            else if (radioButton4.Checked == true)
                AnsOp = "4";
            else
            {
                MessageBox.Show("Answer Option Not Selected");
                return;
            }

            string Marks = cmbMarks.SelectedItem.ToString();

            if (db.UpdateQuestion(qid, txtQuestion.Text, txtOption1.Text, txtOption2.Text, txtOption3.Text, txtOption4.Text, AnsOp, Marks, "T"))
                MessageBox.Show("Question Updated Successfully");
            else
                MessageBox.Show("Failed to Update Question");   
        }
}

助けてくれてありがとう

4

2 に答える 2

2
public partial class EditQuestionMaster : Form
    {
        DbHandling db = new DbHandling();
        int qid; // here is the class variable
        public EditQuestionMaster(int qid_value)
        {
            InitializeComponent();

            this.qid = qid_value; // set the value here

            string subNtop = db.GetEditSubNTopic(qid_value);
            string[] subNtopData = subNtop.Split('~');
            cmbSubject.Text = subNtopData[2];                
        }
private void button1_Click(object sender, EventArgs e)
        {       

            qid // use it here
于 2013-08-02T17:50:40.717 に答える
0

チャンスの答えを拡張する:

次のように、更新を処理するビジネス オブジェクトを定義できます。

public class QuestionEditor
{
    DbHandling db = new DbHandling();
    int questionId;
    public QuestionEditor(int questionId)
    {
        this.questionId = questionId;
    }

    public void SetAnswer(string answerOption)
    {
        db.UpdateQuestion(qid, answerOption);
    }
}

フォームが作成されたら、ビジネス オブジェクトの新しいインスタンスを作成します。

public partial class EditQuestionMaster : Form
{
    QuestionEditor editor;
    public EditQuestionMaster(int qid_value)
    {
        InitializeComponent();

        editor = new QuestionEditor(qid_value);            
    }
}

これで、フォーム内の他のメソッドがエディターを呼び出して操作を実行できるようになりました。

private void button1_Click(object sender, EventArgs e)
{
    string answerOption;

    // switch populates answerOption

    editor.SetAnswer(answerOption);
}

ユーザーが操作するフォームからロジックを移動して更新を実行することを抽象化と呼びます。この抽象化により、質問データへのアクセス方法や保存方法とは関係なく、UI コードを進化させることができます。これが n 層アーキテクチャの基礎です。

于 2013-08-02T18:17:04.530 に答える