簡體   English   中英

在Visual Studio Compact Framework 3.5 C#中隱藏和重新排列GUI元素的最佳方法?

[英]Best way to hide and rearrange GUI elements in Visual Studio Compact Framework 3.5 C#?

在Visual Studio Compact Framework 3.5 C#中隱藏和重新排列GUI元素(字段框,按鈕,標簽等)的最佳方法是什么?

我試圖實現隱藏字段和標簽,目前看來這是一個非常麻煩的過程(我不確定它是否可以改進)。 我如何做的示例在下面的代碼中...

正如你所看到的,它會變得相當混亂。 我在那里做的是首先生成一個布爾控制數組,並使用該數組我首先隱藏指定的字段,然后向上移動所有內容以刪除空格。 我想找到一個更好的方法來做到這一點。

我也在尋找可能控制這些GUI元素排列的方法。 假設我想讓LastName首先出現,而不是FirstName字段。 如果不必重寫此表單中的代碼,我怎么能這樣做?

// Generate boolean array to control visible status of each field
bool[] hideControl = new bool[13];
for (int i = 0; i <= 12; i++)
{
   hideControl[i] = Convert.ToBoolean(MobileConfiguration.Settings[i]);
}
// Difference in pixels between two input panels
int diff = this.txtLastName.Location.Y - this.txtFirstName.Location.Y;
// Hide Fields
hideFields(hideControl);

// Movie Fields
moveFields(hideControl, diff);
..................
// hideFields function
if (hideValue[0] == true)
{
    // Hide Install
    this.txtFirstName.Visible = false;
    this.lblFirstName.Visible = false;
}
// And so forth for each 12 fields
...................
// moveFields function
if (hideValue[0] == true)
{
    // LastName -- 2nd field
       this.txtLastName.Location = new Point(this.txtLastName.Location.X, (this.txtLastName.Location.Y - diff));
    this.lblLastName.Location = new Point(this.lblLastName.Location.X, (this.lblLastName.Location.Y - diff));
    // So forth for 11 fields
}
if (hideValue[1] == true)
{
    // Move up other 10 fields
}
if (hideValue[2] == true)
{
    // Move up other 9 fields
}

我對該表單的gui如下所示(單行上的標簽和文本框):

PanelName1

FirstName ______
LastName _______
Addresss _______
....etc

將您的控件放到面板上,然后您可以隱藏面板,這將隱藏它是父控件的控件,請記住這可能會影響控件的循環,但這可以很容易地解決。 移動面板也會移動控件。

問題實際上是您是否可以重用控件,或者您是否在表單上有太多控件以使用戶易於理解。

如果仍需要循環控件,則可以使用此擴展方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM