我期待有一個簡單的自定義對話框,就像一個消息框,有一個標籤和一個文本框。如果有一個簡單的方法可以做到這一點,對不起!我真的不熟悉對話的東西。winmobile中的文本字段的自定義對話框
感謝您的幫助,夥計!
我期待有一個簡單的自定義對話框,就像一個消息框,有一個標籤和一個文本框。如果有一個簡單的方法可以做到這一點,對不起!我真的不熟悉對話的東西。winmobile中的文本字段的自定義對話框
感謝您的幫助,夥計!
下面是如何在Windows Mobile的一個小的自定義對話框,如下所示:
alt text http://www.freeimagehosting.net/uploads/b8fb5421d6.jpg
添加表格到您的項目,並設置其FormBorderStyle屬性爲None。這允許表單被調整大小和位置,但也意味着它沒有邊框或標題欄,並且用戶無法移動它。
所以你必須假三個。僞造邊框和標題欄的最簡單方法是製作表單SystemColors.WindowFrame的BackColor,然後在BackColor = SystemColors.Highlight和ForeColor = SystemColor.HighlightText中放置一個標籤(圖中所示爲「Dialog」) (並粗體顯示字體),然後在BackColor = SystemColors.Window中放置一個面板,您可以在圖片中看到白色。你必須調整標籤和麪板的位置和大小,以便你有一個1像素的邊框(這只是你的表單的BackColor顯示)。
爲了使形式被其假標題欄上拖動,將此代碼添加到窗體(當然你必須要連接的事件,太):
private bool _Moving = false;
private Point _Offset;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
_Moving = true;
_Offset = new Point(e.X, e.Y);
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (_Moving)
{
Point newlocation = this.Location;
newlocation.X += e.X - _Offset.X;
newlocation.Y += e.Y - _Offset.Y;
this.Location = newlocation;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (_Moving)
{
_Moving = false;
}
}
另外一個問題是,因爲沒有真正的標題欄,用戶無法關閉表單。你必須添加一個OK(或關閉)按鈕,並把這個按鈕的Click事件:
this.DialogResult = DialogResult.OK;
通常你會使用標題欄上的鼠標事件,以方便拖動,但標籤控制不有任何鼠標事件。使用這段代碼,你實際上可以在表單上的任意位置抓取並拖動它,除了面板阻止了這一點,並使標題欄成爲唯一抓取和拖動的地方。
我的其他答案有更多關於從自定義對話框中獲取信息的細節。
更新:實際上,只有沒有明顯方式來關閉無邊界窗體,而無需添加您自己的確定按鈕。只要您不將表單的ControlBox屬性設置爲False,則Today屏幕右上角的OK或X按鈕將關閉對話框,即使它看起來不像它,因爲它實際上並不在形成。
我假設你基本上要返回用戶輸入的字符串自定義對話框。一種方法是將Microsoft.VisualBasic的引用添加到您的項目中,從而使您可以訪問InputBox方法,該方法基本上是一個帶有文本框的消息框。但這並不好玩,我也不確定它會在智能手機上工作。
要展開自己的作品,只需在表單中添加一個表單(名爲CustomDialog),然後將一個文本框(textBox1),一個標籤(label1)和一個按鈕(標記爲「OK」)拖到其上。
要設置標籤文本,將參數添加到窗體的構造是這樣的:
public CustomDialog(string textCaption)
{
label1.Text = textCaption;
}
爲了揭露輸入的文本給調用者,該代碼添加到窗體:
public override string Text
{
get
{
return textBox1.Text;
}
}
在確定按鈕的單擊事件中,輸入以下代碼:
this.DialogResult = DialogResult.OK; // this will close the form, too
要在主窗體中使用此對話框,請將cre吃了這種形式的一個實例,顯示它,請檢查OK按鈕被點擊,然後讀取它的Text屬性(返回用戶輸入的內容),像這樣:
using (CustomDialog dialog = new CustomDialog("What is your name"))
{
if (dialog.ShowDialog(this) == DialogResult.OK)
{
string enteredText = dialog.Text;
}
}
你可以得到票友,但這些是基礎知識。
如果你想要一個超級簡單的,但[T]醜陋的解決方案,您可以在您的項目Microsoft.VisualBasic程序,它可以讓你使用VB功能的InputBox這樣的引用:
string s = Microsoft.VisualBasic.Interaction.InputBox("prompt text",
"title text", "default value", 0, 0);
的對話框佔據整個屏幕,但使用起來很簡單。但正如我所提到的那樣令人難以置信的難看。
您對Visual Studio,C#和winforms開發有多少經驗? – MusiGenesis 2008-11-19 17:25:32