2012-03-02 81 views
1

我已經創建了一個文本框的控件數組,並且它們位於一個網格中,但我無法訪問該框來更改文本。到目前爲止,我試圖解決它:如何在動態創建TextBox控件後使TextBox的文本可編輯?

   fields[row, col].IsEnabled = true; 
       fields[row, col].IsReadOnly = false; 

但它沒有奏效。

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    int wdth = 40; 
    int hght = 32; 
    for (int row = 0; row <= 8; row++) 
    { 
     ColumnDefinition colDef = new ColumnDefinition(); 
     RowDefinition rowDef = new RowDefinition(); 
     colDef.MinWidth = wdth; 
     colDef.MaxWidth = wdth; 
     rowDef.MinHeight = hght; 
     rowDef.MaxHeight = hght; 
     grdAdtn.ColumnDefinitions.Add(colDef); 
     grdAdtn.RowDefinitions.Add(rowDef); 
    }; 
    TextBox[,] fields = new TextBox[9, 9]; 
    FontFamily font = new FontFamily("Courier New"); 
    for(int row=0; row <= 8; row++){ 
     for(int col = 0; col <= 8; col++){ 
      fields[row,col]=new TextBox(); 
      fields[row, col].Name = "txt" + row.ToString() + "i"+col.ToString(); 
      if ((row==0)&&(col==0)) 
      { 
       fields[row, col].Text = "+"; 
      } 
      else if (row == 0) 
      { 
       fields[row, col].Text = (col+1).ToString(); 
      } 
      else if (col == 0) 
      { 
       fields[row, col].Text = (row+1).ToString(); 
      } 
      else 
      { 
       fields[row, col].Text = "??"; 
      } 
      fields[row, col].FontSize = 22; 
      fields[row, col].FontFamily = font; 
      fields[row, col].MaxLength = 2; 
      grdAdtn.Children.Add((fields[row, col])); 
      Grid.SetColumn(fields[row,col], col); 
      Grid.SetRow(fields[row,col], row); 
      fields[row, col].Width = wdth-2; 
      fields[row, col].Height = hght-2; 
      fields[row, col].VerticalAlignment = VerticalAlignment.Center; 
      fields[row, col].HorizontalAlignment = HorizontalAlignment.Center; 
      fields[row, col].HorizontalContentAlignment = HorizontalAlignment.Center; 
      fields[row, col].VerticalContentAlignment = VerticalAlignment.Center; 
      fields[row, col].IsEnabled = true; 
      fields[row, col].IsReadOnly = false; 
      } 
    } 
} 

任何線索?

另外,我可以集中它們與fields[row,col].Focus(),所以它們顯然是啓用,但我不能寫文本,當我用鼠標點擊某些文本框時,它不會將焦點轉移到該文本框(按Tab鍵工作,但我需要更多功能)。據我所知,它什麼都不做。 動態創建文本框後,是否需要爲MouseDown/MouseUp手動添加事件處理程序?

回答

0

我貼你Window_Loaded到溶液中,建,它工作得很好 - 我可以改變文本的文本框生成就好......還有什麼你在你的XAML具有除了

<Grid x:Name="grdAdtn"/> 
相關問題