2017-04-20 74 views
0

因此,我正在開發一個應用程序WinForms,並將數據從Access數據庫填充到Combobox。填充後,我將使用Combobox中的項目在我的標籤上顯示數據。這是我有數據填充:根據C中的長度更改標籤文本行#

public void AutoCompleteBrand() 
{ 
    OleDbConnection con = new OleDbConnection(cs.DBConn); 
    con.Open(); 

    adapter = new OleDbDataAdapter(); 
    adapter.SelectCommand = new OleDbCommand(@"SELECT DISTINCT RTRIM(Phone) FROM tblPhone", con); 

    ds = new DataSet("ds"); 
    adapter.Fill(ds); 
    dtable = ds.Tables[0]; 
    cmbPhone.Items.Clear(); 

    foreach (DataRow drow in dtable.Rows) 
    { 
     cmbPhone.Items.Add(drow[0].ToString()); 
    } 
} 
Combobox選擇的指數的事件裏面

然後,我將使用這個代碼:

private void cmbPhone_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     OleDbConnection con = new OleDbConnection(cs.DBConn); 
     con.Open(); 

     cmd = new OleDbCommand(@"SELECT DISTINCT 
            Brand, Phone, Tecnology 
            FROM tblPhone", con); 
     OleDbDataAdapter mAdapter = new OleDbDataAdapter(cmd); 
     DataSet mDataSet = new DataSet(); 
     OleDbDataReader mReader; 
     mReader = cmd.ExecuteReader(); 

     while (mReader.Read()) 
     { 
      string sBrand = mReader.GetString(0); 
      string sPhone = mReader.GetString(1); 
      string sTec = mReader.GetString(2); 

      lblBrand.Text = sBrand; 
      lblPhone.Text = sPhone; 
      lblTec.Text = sTec; 
     } 
    } 
    catch (Exception ex) 
    { 
      MessageBox.Show("Erro\nDetalhes: " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

基本上技術標籤太大,當它到達的長度變化線。這是可行的嗎?

+0

您是否嘗試設置標籤的AutoSize屬性? – Digvijay

+0

將它設置爲false並根據我想要的尺寸來確定它的大小? – Rekcs

+0

啊..那麼你可以使用System.Drawing.Graphics命名空間中的MeasureString來達到這個目的。您可以得到該字符串在屏幕上的寬度,並相應地設置標籤寬度。 – Digvijay

回答

0

你的問題不是很清楚。你正在使用WPF或Winforms?

Basicly你可以嘗試喜歡的幾件事情:

- 如果的WinForms,您可以設置自動調整大小屬性=您的標籤也是如此。

,你可以嘗試這樣的事情:

while (mReader.Read()) 
    { 
     string sBrand = mReader.GetString(0); 
     string sPhone = mReader.GetString(1); 
     string sTec = mReader.GetString(2); 

     lblBrand.Text = sBrand; 
     lblPhone.Text = sPhone; 
     lblTec.Text = sTec; 
     int wdth = sTec.Length * 16; //you can put another value depending your charachter size. 
     lblTech.Size = new Size(wdth, 22); 




    } 

或者,如果你可以給一個固定寬度的標籤,您可以檢查字符串的長度增加一個新行:

 int lngth = 100; 
    if(sTech.Length > lngth) 
    { 
     sTech = sTech.SubString(0, lngth) + Environment.NewLine + sTech.SubString(lngth); 
    lblTech.Text = sTech; 
    } 

告訴我,如果它的工作。

+0

我用它更新了這個問題。那麼我將使用該方法 – Rekcs

0

您只需要爲您的標籤設置兩個屬性:AutoSizeMaximumSizeAutoSize指示標籤生長(水平和垂直),但MaximumSize將其限制爲某些WidthHeight。所以。只是做這樣的事情:

label1.AutoSize = true; 
label1.MaximumSize = new Size(100, 600); 
label1.Text = "test string which is pretty long";