2016年3月29日 星期二

C# 已經建立的類別.cs之間傳值的方法 (也適用於Form 互相傳遞值 )

寫程式時有可能會發生以下情況:

當建立好一個類別A之後,之後的程式產生類別B,之後需要將"類別B"的值 傳給"類別A",雖然類別B是由A所產生,但是不知該如何將值回應給A做處理 (ex:A產生大量的Thread 類別B 最後 類別B的結果回傳給A)

此時可以使用Event Delegate的方式 建構類別A可接收資料的方法,並且在類別B產生一個呼叫Delegate的事件回應給類別A

程式碼大致如下:
分成1. Form1 2.Form2


//================Form1 設計畫面:




//================Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TransFormExample
{
    /// <summary>
    /// 說明:將資料從別的類別取得,先建構子類別的Delegate
    /// ※目前為單向,如果要由Form1 傳值給Form2
    ///        雙向:1.可以依照相同的方法在Form2進行接收Form1的資料
    ///    
    /// </summary>
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Form2 變數名稱
        Form2 ReturnCallback = new Form2();

        private void button_Form1_Click(object sender, EventArgs e)
        {
            //顯示Form2
            ReturnCallback.Show();
        }

        private void Data(string GetStream)
        {
            //將傳回的字串放進
            this.Form1_textBox.AppendText(GetStream);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //讓MyMailWork掛載事件回傳Identifier的事件
            ReturnCallback.ReturnCallback += new Form2.ReturnDelegate(this.Data);
        }
    }
}


//================Form2設計畫面:




//================Form2.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TransFormExample
{
    public partial class Form2 : Form
    {
        //提供給主類別存放委派事件的位址
        public delegate void ReturnDelegate(string Stream);
        //回傳給主類別事件
        public event ReturnDelegate ReturnCallback;

        public Form2()
        {
            InitializeComponent();
        }

        private void button_Form2_Click(object sender, EventArgs e)
        {
            ReturnCallback(this.Form2_textBox1.Text);
        }
    }
}



範例程式下載  Visual 2010 windows form 程式 :

https://drive.google.com/file/d/0B42wM6w1VZR7bmVXcnVETENQNEE/view?usp=sharing

2016年3月8日 星期二

C# MVC專案, 無法叫用中斷點 未載入這個文件的符號

Dear all : 某次取得TFS專案後發現該問題,查了網路上許多方法後都無效,最後進行以下的操作才讓程式恢復Debug ,原本推測是bin 底下的pdb未進行同步,但發現清除專案在建置仍是最新的組件。
現在發現應該是IIS Catch住組件的資訊。

1.  專案 -> 屬性

2. Web -> 將專案URL 的初始位置 修改,※筆者原本URL為: http://localhost:9526 當改成 8429後就可以進行Debug了


因為專案屬於visual 2013 C# .netFrameWork 4.5.1 MVC  如果還是無法解決只能再另尋方法