我有一個StackPanel,一些擴展器,一些文本框和一些按鈕。從按鈕位於同一控件中的控件獲取值
例如,我有以下結構:
StackPanel
Expander 1
TextBox 1
Button 1
Expander 2
TextBox 2
Button 2
Expander 3
TextBox 3
Button 3
我怎樣才能從那裏擴展按鈕被點擊的textbox.Text?
例如,我單擊按鈕2,我想要在擴展器2中獲得TextBox 2. 所有控件都是以編程方式添加的,而不是StackPanel。
有事嗎?我不知道在相同的擴展器中單擊按鈕時獲取文本框的方式。
我想要2個方法來保存我的擴展頭和它的內容(例如文本框的值)。
第一種方法是右鍵單擊擴展器的標題,它將標題轉換爲文本框,以便我可以編輯文本。通過點擊ENTER,它將把TextBox.Text保存到TextBlock中。哪些工作正常。但是我不能對Button使用相同的代碼。
Expander editable_expander; // Expander sender from Expander_MouseRightButtonDown
private void Expander_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
var ex = sender as Expander;
TextBox tb = new TextBox();
tb.Text = ex.Header.ToString();
tb.KeyUp += TextBox_KeyUp;
ex.Header = tb;
editable_expander = ex;
}
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
// Edit Columnname of selected Column when Enter pressed
if (e.Key != Key.Enter) return;
var tb = sender as TextBox;
e.Handled = true;
string old_expander_name = editable_expander.Name.ToString();
string old_column_name = old_expander_name.Split('_')[0];
int length = 0;
string type = "";
if(OpenConnection() == true)
{
try
{
Grid grid = editable_expander.Content as Grid;
List<StackPanel> stackpanel = grid.Children.OfType<StackPanel>().ToList();
for(int i = 1; i < 2; i++)
{
StackPanel sp = stackpanel[i];
List<TextBox> textbox = sp.Children.OfType<TextBox>().ToList();
for(int j = 0; j < textbox.Count; j++)
{
TextBox tb1 = textbox[j];
length = Convert.ToInt32(tb1.Text);
}
List<ComboBox> combobox = sp.Children.OfType<ComboBox>().ToList();
for(int k = 0; k < combobox.Count; k++)
{
ComboBox cb = combobox[k];
type = cb.Text;
}
}
string query = "ALTER TABLE " + editable_expander.Tag + " CHANGE " + old_column_name + " " + tb.Text + " " + type + "(" + length + ")";
MySqlCommand cmd = new MySqlCommand(query, connection);
cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
}
editable_expander.Header = tb.Text;
}
我想要2種方法來保存。 1是右鍵單擊擴展器標題,這會將標題轉換爲文本框。當輸入被按下時,它將會保存並且會改回到TextBlock。我將在我的主題中添加此方法。但我想我不能再次使用按鈕單擊事件,因爲即時通訊工作與文本框事件 –
谷歌有些東西...像「WPF得到父母控制」和「WPF得到特定的孩子控制」 – musefan
我想你想看看爲每個擴展器信息製作一個視圖模型。這樣,該對象可以更新Expander – kenny