最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#日歷樣式的下拉式計算器實(shí)例講解

 更新時間:2015年09月24日 16:58:36   投稿:lijiao  
如果我們正在做一個類似于庫存控制和計費(fèi)系統(tǒng)的項(xiàng)目,有些部分可能必須手動計算數(shù)值。因此,用戶就不得不使用計算器得到結(jié)果,再填入到輸入字段中,或者在工作窗口上單獨(dú)打開一個計算器窗口??傊?,各種不便和麻煩。

本文介紹了如何在Visual Studio中創(chuàng)建用戶控件來顯示下拉式計算器,彈出效果類似于日歷控件。

介紹

如果我們正在做一個類似于庫存控制和計費(fèi)系統(tǒng)的項(xiàng)目,有些部分可能必須手動計算數(shù)值。因此,用戶就不得不使用計算器得到結(jié)果,再填入到輸入字段中,或者在工作窗口上單獨(dú)打開一個計算器窗口??傊?,各種不便和麻煩。

這篇文章主要描述的是如何添加下拉式計算器到DataGridView單元格中,如下圖:

使用代碼

第一步,我們必須先創(chuàng)建一個函數(shù)計算器,并且能夠使用控件。因此,不妨先創(chuàng)建一個Visual Studio用戶自定義控件。怎么做呢?打開VS,創(chuàng)建一個新的Windows窗體應(yīng)用程序(甚至你也可以在你當(dāng)前的項(xiàng)目中這么做,但最好能分開,然后結(jié)合)。

然后,在Solution Explorer中,右鍵單擊項(xiàng)目,選擇add->User Control。命名(這里使用“CalculatorControl”),并添加。這時會給你一個像工作空間一樣的Windows窗體。在它上面,用控件工具箱中的TextBox和Button創(chuàng)建一個計算器的布局。布局越小越好(想想日歷控件),因?yàn)檫@就是個計算器而已。

為了快速搞定計算器功能,可以點(diǎn)擊這里下載NCal(確保下載二進(jìn)制文件),并添加到項(xiàng)目的引用文件中。

實(shí)現(xiàn)每個數(shù)字按鈕的點(diǎn)擊事件,將對應(yīng)的數(shù)字輸入/(追加)到文本框中,然后用同樣的方式實(shí)現(xiàn)其他按鈕,如+,X,/…并把對應(yīng)的符號輸入/(追加)到文本框中…

例如在文本框中輸入:2 * 3 + 4

然后使用下面的代碼來驗(yàn)證表達(dá)式,并得到結(jié)果:

// 
using System.Windows.Forms; 
using NCalc; 
// 
  string resText; 
  bool eqPressed; 
  double result; 
 
public void btnEqual_Click(object sender, EventArgs e) 
    { 
      Expression ex = new Expression(textBox1.Text); 
      if (ex.HasErrors()) 
      { 
        //Invalid Expression 
      } 
      else 
      { 
        result = Convert.ToDouble(ex.Evaluate()); 
        resText = result.ToString(); 
      } 
      textBox1.Text = resText; 
      text = resText; 
      eqPressed = true; 
 
    } 
// 

現(xiàn)在計算器功能已經(jīng)完成。直接構(gòu)建解決方案,那么你可能會發(fā)現(xiàn)用戶控件顯示在工具箱頂部。你可以添加Windows窗體,拖放用戶控件到窗體中運(yùn)行,看看能否正常工作。

然后,在你想要添加下拉式計算器的項(xiàng)目中,創(chuàng)建另一個只有一個小按鈕的用戶控件。這個按鈕將被用于打開計算器。

添加CalculatorControl內(nèi)置引用文件到項(xiàng)目中。

創(chuàng)建一個新的繼承ToolStripDropDown的類:

using System.Windows.Forms; 
 
class CalDrop : ToolStripDropDown 
  { 
   Control content; 
   ToolStripControlHost drop; 
 
public CalDrop(CalculatorControl content) 
    { 
 
      this.content = content; 
 
      this.drop= new System.Windows.Forms.ToolStripControlHost(content); 
 
      //Add the host to the list 
      this.Items.Add(this.drop); 
    } 
} 

在按鈕的單擊事件中添加以下代碼:

private void button1_Click(object sender, EventArgs e) 
    { 
      CalculatorControl calculator = new CalculatorControl(); 
      CalDrop cal = new CalDrop(calculator); 
 
      Point controlLoc = fm.PointToScreen(button1.Location); 
      Point relativeLoc = new Point(controlLoc.X + button1.Width + 100, 
  controlLoc.Y + button1.Height * 2); 
      Rectangle calRect = button1.DisplayRectangle; 
      cal.Show(locPoint); 
    } 

添加控件到DataGridViewCell

在你構(gòu)建解決方案時,新的按鈕控件會出現(xiàn)在工具箱中。添加以下代碼到項(xiàng)目的窗體類中。

private CalculatorPick calculator; 
 
public form1() 
{ 
      calculator = new CalculatorPick(); 
 
      calculator.Visible = false; 
      dataGridView2.Controls.Add(calculator); 
} 
 
private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
        if (e.ColumnIndex == clmCommision.Index) 
        { 
          Rectangle calRect = dataGridView2.GetCellDisplayRectangle 
   (e.ColumnIndex, e.RowIndex,false);          
 
          Point p = calculator.FindForm().PointToClient 
  (calculator.Parent.PointToScreen(calculator.Location)); 
          p.X -= calculator.Width/3; 
          p.Y += calculator.Height; 
          calculator.LocPoint = p; 
 
          calculator.Width = calRect.Width/3; 
          calculator.Height = calRect.Height; 
 
          calculator.Visible = true; 
          calculator.Calculator.btnEqual.Click += new EventHandler(calculatorBtnEqlClicked); 
        } 
        else 
          if(calculator!=null) 
          calculator.Visible = false; 
} 
 
void calculatorBtnEqlClicked(object sender, EventArgs e) 
{      
      dataGridView2.CurrentCell.Value = calculator.Calculator.Result.ToString();      
} 

本技巧描述的是添加控件到DataGridView中,可以讓界面顯得更為互動,喜歡的朋友就點(diǎn)個贊吧!

相關(guān)文章

  • C#圖像處理之圖像平移的方法

    C#圖像處理之圖像平移的方法

    這篇文章主要介紹了C#圖像處理之圖像平移的方法,涉及C#操作圖形實(shí)現(xiàn)平移的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • c#序列化詳解示例

    c#序列化詳解示例

    序列化是將對象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^程。與序列化相對的是反序列化,它將流轉(zhuǎn)換為對象。這兩個過程結(jié)合起來,可以輕松地存儲和傳輸數(shù)據(jù)
    2014-02-02
  • 3種方法實(shí)現(xiàn)WindowsForm切換窗口

    3種方法實(shí)現(xiàn)WindowsForm切換窗口

    這篇文章主要介紹了3種方法實(shí)現(xiàn)WindowsForm切換窗口,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#獲取計算機(jī)硬件與操作系統(tǒng)的相關(guān)信息

    C#獲取計算機(jī)硬件與操作系統(tǒng)的相關(guān)信息

    這篇文章介紹了C#獲取計算機(jī)硬件與操作系統(tǒng)相關(guān)信息的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# WinForm調(diào)用Shell_NotifyIcon的示例代碼

    C# WinForm調(diào)用Shell_NotifyIcon的示例代碼

    這篇文章主要介紹了C# WinForm調(diào)用Shell_NotifyIcon的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • 設(shè)計模式速記

    設(shè)計模式速記

    本文主要介紹了設(shè)計模式:創(chuàng)建型模式;結(jié)構(gòu)型模式;行為型模式三大類。具有很好的參考價值,相信有助于大家記憶與學(xué)習(xí),下面跟著小編一起來看下吧
    2017-02-02
  • 深入解析C#中的命名實(shí)參和可選實(shí)參

    深入解析C#中的命名實(shí)參和可選實(shí)參

    這篇文章主要介紹了C#中的命名實(shí)參和可選實(shí)參,在COM接口相關(guān)的開發(fā)中經(jīng)??梢杂玫?需要的朋友可以參考下
    2016-01-01
  • C# 使用Log4net添加日志記錄的方法

    C# 使用Log4net添加日志記錄的方法

    本文主要介紹了C# 使用Log4net添加日志記錄的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C#實(shí)現(xiàn)分頁組件的方法

    C#實(shí)現(xiàn)分頁組件的方法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)分頁組件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • c# 如何實(shí)現(xiàn)一個簡單的json解析器

    c# 如何實(shí)現(xiàn)一個簡單的json解析器

    這篇文章主要介紹了c# 如何實(shí)現(xiàn)一個簡單的json解析器,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論

安宁市| 抚州市| 车致| 通道| 松滋市| 东台市| 星子县| 正安县| 独山县| 苗栗市| 永济市| 新平| 交口县| 锡林浩特市| 太保市| 彭阳县| 城市| 嘉峪关市| 奉化市| 苏州市| 道真| 万山特区| 清丰县| 定远县| 玉屏| 河南省| 呼玛县| 石泉县| 广南县| 南靖县| 太仆寺旗| 龙里县| 江城| 义乌市| 商城县| 四子王旗| 白银市| 夏邑县| 丹凤县| 兴安盟| 缙云县|