none
ScrollBar控制像該怎麼寫 RRS feed

  • 問題

  • 想請教一下大家 我要增加ScrollBar捲軸控制項  可以讓Text顯示東西時 可以往下拉

    但是我在圖形介面那邊增加了此ScrollBar卷軸控制項,但是我去拉動卷軸時 往下拉時 Text部會跟著旺下顯示下面的東西

    我也常是很多種寫法 但是卻顯示錯誤訊息為 不能掛執行緒此類訊息

    會不會是因為我將Text控制項 用SetText方式去寫的原因呢?

    我還是新手  有點不太了解  該怎麼去寫出可以拉動卷軸時 可以讓Text的顯示也能跟著顯示出現 

    public partial class fclsRS232Tester : Form
        {

           int InputData; 
            delegate void SetTextCallback(string text);        

         private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
            {
                InputData = port.BytesToRead;

                System.Text.Encoding encoding = System.Text.Encoding.ASCII;
                byte[] myData = new byte[InputData];
                int dataLength = port.Read(myData, 0, InputData);

                string str = encoding.GetString(myData);
                str = BitConverter.ToString(myData).Replace(" ", "-");
                SetText(str);

                string[] Split = str.Split('-');
    }

     private void SetText(string text)
            {
                if (this.txtIn.InvokeRequired)
                {
                    SetTextCallback d = new SetTextCallback(SetText);
                    this.Invoke(d, new object[] { text });
                }
                else this.txtIn.Text += text;
            }
    }

    2010年8月11日 上午 08:09

所有回覆

  • 你為什麼不使用TextBox本身的Scrollbar就好?

    TextBox. . :: . ScrollBars 屬性

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月11日 上午 08:13
    版主
  • 這個我有看書 有看到   

    我有試過 但是 不知道我是不是寫成SetText方式

    在執行時會出現錯誤就是 無法跳行執行緒

    不然就是執行時 ScrollBar沒有任何動作

    2010年8月11日 上午 08:23
  • 可否明確地描述你目前所使用的方式, 包含你所使用的ScrollBar是如何產生的, 是設定TextBox的ScrollBars屬性, 還是使用VScrollBar控制項

    與實際出現的錯誤訊息. 因為我沒見錯誤訊息是 "無法跳行執行緒", 所以沒辦法知道這是什麼東西.

    盡量正確與詳細地描述資料, 才有助於問題的解決.

    如果有必要, 請將圖也一併貼上來.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月11日 上午 08:52
    版主
  • 這是我用Text控制項內部的方式去寫:txtIn.ScrollBars = ScrollBars.Vertical;

     

    出現此錯誤:跨執行緒作業無效: 存取控制項 'txtIn' 時所使用的執行緒與建立控制項的執行緒不同。

     

    我也要問的是  我不是一般Text寫法 因為我是寫成SetText方式  

    這樣寫Text的ScrollBar會不會影響?

     

    自己使用VScrollBar控制項去寫也是出現此錯誤

    不然就是刺控制項沒有任何功能

    2010年8月11日 上午 09:09
  • 這是我用Text控制項內部的方式去寫:txtIn.ScrollBars = ScrollBars.Vertical;

     

    出現此錯誤:跨執行緒作業無效: 存取控制項 'txtIn' 時所使用的執行緒與建立控制項的執行緒不同。

    你的 txtIn.ScrollBars=ScrollBars.Vertical 是使用IDE畫面設定, 還是寫在哪個事件委派函式中 ?

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月11日 下午 02:30
    版主
  • 我是寫在private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)事件中

     

    但是我的Text的寫法是用SetText 這樣可以嗎?

    • 已提議為解答 陳奕昌 2010年8月18日 上午 10:09
    2010年8月12日 上午 01:41
  • HOW TO:進行對 Windows Form 控制項的安全執行緒呼叫

    http://msdn.microsoft.com/zh-tw/library/ms171728(VS.80).aspx

    一樣用委派的方式,寫在SetText副程式裡試試...

    2010年8月12日 上午 02:07
  • 意思是說像 我寫下面那部分程式方法 將ScrollBar寫進去?

     

    delegate void SetTextCallback(string text);  
         
    private void SetText(string text)
            {
                if (this.txtIn.InvokeRequired)
                {
                    SetTextCallback d = new SetTextCallback(SetText);
                    this.Invoke(d, new object[] { text });
                }
                else this.txtIn.Text += text;
            }
    }

    2010年8月12日 上午 02:11
  • 我建議此種初始的屬性設定放在Form的Load事件委派函式中就好了

    另請參閱論壇既有關於跨執行緒的討論

    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=%E8%B7%A8%E5%9F%B7%E8%A1%8C%E7%B7%92


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年8月12日 下午 02:22
    版主
  • 恩 好謝謝

     

    2010年8月13日 上午 02:03