第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將整數(shù)值從 5 個不同的文本框傳遞到 2 個不同的文本框

如何將整數(shù)值從 5 個不同的文本框傳遞到 2 個不同的文本框

C#
飲歌長嘯 2023-12-17 16:54:36
我有一個帶有多個按鈕的 Winforms 應(yīng)用程序。它要求用戶單擊按鈕,無論需要多少次,該按鈕 1 單擊事件都會在文本框 1 內(nèi)添加一個整數(shù)值,該整數(shù)值隨著每次單擊按鈕 1 而遞增。然后我有button2,當(dāng)單擊它時,它會從textbox1 內(nèi)的整數(shù)值中減去?,F(xiàn)在我也有 textbox2、textbox3、textbox4、textbox5 和 textbox6 做同樣的事情,每個都有自己的一對按鈕來加和減。它們都彼此獨立工作。 Txtbox1,2,3,4,5,6 是發(fā)送者。當(dāng)嘗試將 txtbox1、txtbox2、txtbox3、txtbox4、txtbox5 和 txtbox6 中的整數(shù)值傳遞到 txtbox7 和 txtbox8(接收 txtbox)時,我的問題出現(xiàn)了。每個文本框還有兩個用于添加值和減去值的按鈕。我能夠?qū)?txtbox1 的值傳遞到 txtbox7 & txtbox8 沒有問題。當(dāng)我使用相同的代碼讓所有其他 txtboxes 將 int 值傳遞給 txtbox7 & 時,問題就開始了。 txtbox8,6 個 txtbox 之一的輸入將相互覆蓋。例如如果我在 txtbox1 上點擊 5 次,它會將 int 5 傳遞給 txtbox1、txtbox7 和 txtbox1。 txtbox8,但如果我去點擊 txtbox2 兩次,然后點擊 txtbox7 & 8 值 5 并未消失,而是顯示新值 2。我想要發(fā)生的是,當(dāng)單擊任何一個按鈕時,傳遞到 2 個接收文本框的值需要添加到已經(jīng)存在的 int 值中。我不知道這是否足夠解釋。這是我的代碼。private void button1Add_Click(object sender, EventArgs e){  AddToTexBox1(1);}private void AddToTextBox1(int changeBy){  if (int.TryParse(txtBox1.Text, out int value))  {     value += changeBy;     txtBox1.Text = value.ToString();     txtBox7.Text = value.ToString();     txtBox8.Text = value.ToString();  }  else  {     MessageBox.Show("Invalid Integer in TextBox!");  }}private void Btn2Subtract_Click(object sender, EventArgs e){     AddToTextBox1(-1);}該代碼對于 txtBox 1 和 txtBox7 & 運行良好。 txtBox8 但當(dāng)我嘗試對其他 txtBox 使用相同的內(nèi)容時,它無法按預(yù)期工作。任何幫助將不勝感激。
查看完整描述

3 回答

?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

您當(dāng)前的問題是直接對文本框中存儲的值進行操作。所以當(dāng)你這樣做時:

txtBox7.Text = value.ToString();

您不檢查當(dāng)前存儲在 txtBox7 中的值。

所以你可以按照2條路徑來解決它:

  1. 使用與 int 相同的解析從 txtBox7 中獲取值并將其放入變量中,然后向該變量添加值并然后將其保存回目標(biāo)文本框。

  2. 您可以在邏輯背后有一些模型(如果這些數(shù)字代表某些東西)并更新模型(通過根據(jù)您的“業(yè)務(wù)”規(guī)則將數(shù)字放入模型的屬性中)。之后,通過將模型中的值放入文本框,將 UI(文本框)與模型同步。理想情況下,您希望為其使用數(shù)據(jù)綁定(以便在模型更改后自動刷新您的 UI)。

以下是 1 的代碼示例:

if (int.TryParse(txtBox1.Text, out int value) &&

    int.TryParse(txtBox7.Text, out int oldValue7) &&

    int.TryParse(txtBox7.Text, out int oldValue8)

    )

{

    value += changeBy;

    oldValue7 += value;

    oldValue8 += value;

    txtBox1.Text = value.ToString();

    txtBox7.Text = oldValue7.ToString();

    txtBox8.Text = oldValue8.ToString();

}

如果您需要有關(guān)數(shù)據(jù)綁定的更多信息,請參閱文檔。您必須花時間學(xué)習(xí)和習(xí)慣這種方法,但它可以讓您將模型邏輯與 UI 解耦,這對于復(fù)雜的模型和 UI 是有益的。


以下是我為業(yè)務(wù)規(guī)則引入單獨的類的含義的示例:


class MyModel

{

  public int MyFirstInputValue {get; set;}

  public int MySecondInputValue {get; set;}


  public int MyFirstResultValue {get; private set;}

  public int MySecondResultValue {get; private set;}


  public void RunMyCalculationLogic()

  {

    // your calculations go here...

    MyFirstResultValue = MyFirstInputValue + MySecondInputValue;

    MySecondResultValue = MyFirstInputValue - MySecondInputValue;

  }

}

然后你或多或少像這樣使用這個模型:


var myModel = new MyModel();

myModel.MyFirstInputValue = 1; // parse value from input textBox1

myModel.MySecondInputValue = 2; // parse value from input textBox2

myModel.RunMyCalculationLogic();

// TODO: use results from MyFirstResultValue and MySecondResultValue to populate textBoxes you need

我希望這足以讓您開始。


查看完整回答
反對 回復(fù) 2023-12-17
?
千巷貓影

TA貢獻1829條經(jīng)驗 獲得超7個贊

如果您使用 NumericUpDown 控件而不是文本框,您的生活會輕松得多。您可以將所有 NUD 設(shè)置為默認(rèn)值 0,為它們編寫一個值更改事件處理程序(將所有 NUD 值更改事件鏈接到同一個處理程序),該處理程序具有一行代碼:

nud7.Value = nud1.Value + nud2.Value + nud3.Value ...

如果您要將 nud1 到 nud6 放入構(gòu)造函數(shù)中的類范圍數(shù)組中,那么您甚至可以使用 LINQ 將其簡化為:

nud7.Value = myNuds.Sum(n => n.Value);

這是一步一步 - 在新項目中執(zhí)行此操作。大約需要 10 分鐘:

  • 制作一個新的 Windows 窗體應(yīng)用程序

  • 在表格上輸入 8 個數(shù)字

  • 選擇全部,將它們的最小值和值設(shè)置為 0,將最大值設(shè)置為相關(guān)的值

  • 僅選擇前 6 個

  • 轉(zhuǎn)到屬性網(wǎng)格,單擊閃電,找到與值更改相關(guān)的事件(可能稱為 ValueChanged,我現(xiàn)在不在電腦上進行測試)并寫入“AllChanged”在旁邊的框中按回車鍵

  • 出現(xiàn)代碼視圖。將我發(fā)布的第一個代碼(添加所有值并將結(jié)果存儲在數(shù)字 updown 7 的值中的代碼)放在事件處理程序中

  • 運行項目

我不確定為什么你有兩個總計框..但我相信你可以解決這個問題

注意不要將相同的事件處理程序添加到框 7;你會導(dǎo)致無限循環(huán),導(dǎo)致堆棧溢出


查看完整回答
反對 回復(fù) 2023-12-17
?
揚帆大魚

TA貢獻1799條經(jīng)驗 獲得超9個贊

在嘗試了我在另一個 Winforms 項目中使用的一些代碼之后。我找到了解決問題的方法。這就是我所做的。



       TextBox[] txtbox;



        public FormOne()

        {

            InitializeComponent();




            Sqlconn con = new Sqlconn();


            txtbox = new TextBox[] { txtBox1, txtBox2, txtBox3, txtBox4, txtBox5, txtBox6, txtBox7};


            foreach (TextBox text in txtbox)

                text.TextChanged += new EventHandler(txtbox_TextChanged);


           }


           private void txtbox_TextChanged(object sender, EventArgs e)

        {

            int value = 0;

            int total = 0;

            foreach (TextBox text in txtbox)

            {

                if (int.TryParse(text.Text, out value))

                    total += value;

            }

            txtBox7.Text = total.ToString();

            txtBox8.Text = total.ToString();


            private void FormOne_Load(object sender, EventArgs e)

            {


            }


感謝大家的支持。


查看完整回答
反對 回復(fù) 2023-12-17
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號