台灣最大程式設計社群網站
線上人數
1098
 
會員總數:240877
討論主題:186649
歡迎您免費加入會員
討論區列表 >> C# >> WEB From 接收TextBox控制項中的值 帶入DLL函式庫中的變數
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
WEB From 接收TextBox控制項中的值 帶入DLL函式庫中的變數
價值 : 200 QP  點閱數:419 回應數:19

樓主

James Cheng
門外漢
0 7
342 62
發送站內信


請問各位前輩
小弟最近在接觸印表機
目前在本機端測試中
基本的要求如下 :
設計一個簡單的UI介面,能將TEXTBOX輸入的值傳到給DLL檔中的變數

但現在的問題是
我先DllImport了函式庫
但DLL檔中的欄位(例如string content)
都必須要到程式碼中寫入
無法直接將UI介面中TEXTBOX輸入的值帶入content

請問該怎麼解決呢??


搜尋相關Tags的文章: [ WEB ] , [ DLL ] , [ 印表機 ] ,
本篇文章發表於2017-04-05 14:22
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

春天
檢舉此回應
是指傳參嗎...

本篇文章回覆於2017-04-05 15:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

James Cheng
檢舉此回應

請問春天大大
此段程式我應該撰寫再哪裡呢??

我想將自己的問題再多詳述一下好了
**現在想將textbox中所輸入的值能宣告為一個變數用來代替最後的參數"MainTiTle"**
dll如下
[DllImport("TSCLIB.dll", EntryPoint = "printerfont")]
public static extern int printerfont(string x, string y, string fonttype,
string rotation, string xmul, string ymul,
string MainTiTle);
實作為
TSCLIB_DLL.printerfont("30", "1180", "KAIU40S", "270", "1", "1", "MainTitle");
但我目前都只能列印出雙引號的字串內容
不知道該如何將變數代入且列印出來

小弟第一次接觸這東西
不知道該怎麼發問才能清楚表達
若有需要問題更詳細的部分請告知我
我會立馬提供的
還請前輩們多多體諒
解惑時能描述的詳細一點
謝謝!!!!
本篇文章回覆於2017-04-05 18:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

春天
檢舉此回應
WebForm取TextBox輸入的值用TextBox.Text
在調用TSCLIB_DLL.printerfont前要做一些檢查以免TextBox輸入的值有問題,比如X及Y就要檢查是否為數字

本篇文章回覆於2017-04-06 11:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

James Cheng
檢舉此回應
春天大
謝謝你的回應
但還是不行
加入判斷式後
就無法列印了

早上也試過類似的方式
我無法在Button_Click中多寫其他的東西
例如宣告變數或下判斷式

例如我寫入你的程式碼後
程式可以F5執行
但Button功能就失效了
本篇文章回覆於2017-04-06 16:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
沒用過WebForm剛剛去查了一下
下面這樣寫可以取到TextBox的值,你再試試看。
取到之後當做參數傳到Dll函式裡就可以了

本篇文章回覆於2017-04-06 17:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

James Cheng
檢舉此回應
請教春天大
其實你上述的程式碼我不是很懂
(請體諒小弟是菜鳥....)

有件事很重要忘了說
UI的頁面(UI.aspx)與print(PRINT.aspx)的頁面是分開的
我從UI.aspx傳值到PRINT.aspx接值
*確定傳接值是沒有問題的

再請教
我原本textbox命名為txtMainTitle
請問是否修改如下
protected void Page_Load(object sender, EventArgs e)
{
TextBox text1 = new TextBox();
text1.ID = "txtMainTitle";
Button button1 = new Button();
button1.Text = "Print";
Form.Controls.Add(txtMainTitle);
Form.Controls.Add(button1);
button1.Click += button1_Click;
}

protected void button1_Click(object sender, EventArgs e)
{
string text = Request.Form["txtMainTitle"];
}

這樣修改是對的嗎??
本篇文章回覆於2017-04-07 11:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

春天
檢舉此回應
不是,既然你有辦法取到txtMainTitle的值,不就把他丟進DLL函式裡當參數就好了?
本篇文章回覆於2017-04-07 11:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

James Cheng
檢舉此回應
真的很抱歉!!!!!!!!!!!!!

我想再補充修改一下剛剛的發文
UI.aspx中的button_click中是用session傳值
protected void Button1_Click(object sender, EventArgs e)
{
Session["MainTitle"] = txtMainTitle.Text;
Session["SecTitle"] = txtSecTitle.Text;
Session["Content1"] = txtContent1.Text;
Session["Content2"] = txtContent2.Text;
Session["Content3"] = txtContent3.Text;
Response.Redirect("PRINT.aspx");
}

所以在PRINT.aspx中
寫入您給的程式碼應該需要如何修改呢??

(有嘗試貼上您給的程式 但未能執行)
本篇文章回覆於2017-04-07 11:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

春天
檢舉此回應
在PRINT.aspx中

本篇文章回覆於2017-04-07 12:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

James Cheng
檢舉此回應
丟不進去......T_T

函式如下
[DllImport("TSCLIB.dll", EntryPoint = "printerfont")]
public static extern int printerfont(string x, string y, string fonttype,
string rotation, string xmul, string ymul,
string txtMainTitle);

實作如下
string A = Session["MainTitle"].ToString();//將接到的值指派給A
TSCLIB_DLL.printerfont("60", "1050", "KAIU40S", "270", "1", "1", A);

完全列印不出東西
本篇文章回覆於2017-04-07 12:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

James Cheng
檢舉此回應
您的方式我也試過了
依舊無法輸出
T_T..........
本篇文章回覆於2017-04-07 12:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

春天
檢舉此回應
那我想你應該是沒做印表機的初始化
DLL裡應該還有其它函式
第一要先調用openport(string portName);開啟印表機連接埠
再來應該是setup(string width, string height, string printSpeed, string density, string sensor, string vercital, string offset); 列印設定
然後才是printerfont(string x, string y, string fonttype, string rotation, string xmul, string ymul, string txtMainTitle);
本篇文章回覆於2017-04-07 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

James Cheng
檢舉此回應
protected void Button1_Click(object sender, EventArgs e)
{
TSCLIB_DLL.openport("TSC TTP-247");
//開啟印表機
TSCLIB_DLL.usbportqueryprinter();
//檢查印表機狀態
TSCLIB_DLL.setup("70", "152", "3", "15", "0", "0", "0");
//小紙尺寸
//TSCLIB_DLL.setup("90", "203", "3", "15", "0", "0", "0");
//大紙尺寸
TSCLIB_DLL.clearbuffer();
//Clear image buffer
TSCLIB_DLL.barcode("88", "40", "128", "60", "1", "0", "2", "3", "Barcode Test");
//列印條碼
TSCLIB_DLL.printerfont("20", "1050", "KAIU40S", "270", "1", "1", "我愛大咪咪");//墨攻溫泉之旅
//列印主標題
TSCLIB_DLL.windowsfont(80, 1000, 30, 90, 0, 0, "KAIU40S", "票券使用注意事項 :");//票券使用注意事項 :
//列印次標題
//TSCLIB_DLL.sendcommand("PUTBMP 100,400,\"IMAGES.BMP\"");
//列印圖片,檔案名稱都要全大寫
TSCLIB_DLL.sendcommand("TEXT 150,1000,\"MING18S\",270,1,1,\"1.男左女右趴牆上。\"");
TSCLIB_DLL.sendcommand("TEXT 180,1000,\"MING18S\",270,1,1,\"2.男的交出值錢財物。\"");
TSCLIB_DLL.sendcommand("TEXT 210,1000,\"MING18S\",270,1,1,\"3.女的交出內衣內褲。\"");
//本文內容,分行輸入
TSCLIB_DLL.printlabel("1", "1");//Print labels
TSCLIB_DLL.closeport();
}

這是我print的全部實作
都可以正常運作 printerfont windowsfont sendcommand(裡面是印表機的特有語法)
這些都是輸出指令
列印出來就是 :
我愛大咪咪
使用注意事項
1.男左女右趴牆上。
2.男的交出值錢財物。
3.女的交出內衣內褲。

直接寫在程式碼裡都可以正常列印
但不管用何方式就是無法接到外來的變數來替代字串輸出
好詭異啊!!!!!!
本篇文章回覆於2017-04-07 14:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

James Cheng
檢舉此回應
真的很感謝春天大的幫忙!!!!

其實我問過幾位像您一樣有相當經驗的人士
每個給我的方法都不同
我也都試過
一樣沒辦法成功將變數帶入指令中的字串
大家也都覺得正常不應該會是這樣

我自己在想會不會問題是在函式庫
它本身就已經寫死了
@@~
本篇文章回覆於2017-04-07 14:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

春天
檢舉此回應
這我之前要用的時候寫的,你用看看

本篇文章回覆於2017-04-07 14:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

回覆
如要回應,請先登入.