2009-07-16 13 views
0

初めてXAMLを使用しているため、ご質問はほとんどありません。Cボタンを使用してボタンが内部にある場合、ボタンにプログラム的にアクセスする方法

  1. はどのようにしてのハードディスクドライブ内のフォルダを参照するには、ボタン(BrowseButton)を使用していますか? この場合はボタンが内側にあるので

  2. 私は以下の方法を使用できますか? 実際に最初のドックパネルがイメージを保持し、あるラベルと他のドックパネルにタブコントロールがあります。

  3. 私はtabcontrolを持っていますが、どのように実行時にタブを増やすことができるlistviewを追加できますか?listviewはランタイムでも利用できるはずです。 は、ボタンを

を閉じるために、タブの上にクローズ(「X」)のマークを追加する方法おそらく私は申し訳ありませんが、多くの質問を尋ねた:(

<Grid> 
     <DockPanel> 
      <StackPanel> 
       <Image Name="imgClientPhoto" HorizontalAlignment="Left" VerticalAlignment="Top" Width="auto" Height="auto" Grid.Column="0" Grid.Row="0" Margin="0" 
         Source="D:ehtmp_top_left.gif" MinWidth="450" MinHeight="100" Grid.IsSharedSizeScope="True"> 

       </Image> 

       <Button x:Name="BrowseButton" Margin="0,13.638,30,14.362" Content="Browse" Click="BrowseButton_Click" HorizontalAlignment="Right" Width="111" /> 
          <TextBox x:Name="txtBxBrowseTB" Margin="46,10,146,10" Text="TextBox" TextWrapping="Wrap" TextChanged="BrowseTB_TextChanged"></TextBox> 
          <Label HorizontalAlignment="Left" Margin="-14,22,0,10" Name="label1" Width="69.75" FontSize="13" VerticalContentAlignment="Top" HorizontalContentAlignment="Center">Path:</Label> 
         </Grid> 
        </GroupBox> 
       </Grid> 

      </StackPanel> 

     </DockPanel> 
     <DockPanel> 
      <StackPanel Margin="0,158,0,0" HorizontalAlignment="Left" Width="330" Height="557.5" VerticalAlignment="Top"> 
       <TextBox Height="50" Name="textBox1" Width="240" Margin="0,35,0,0" VerticalAlignment="Stretch" HorizontalAlignment="Right" /> 
       <ListBox Height="470" Name="listBox1" Width="332" Background="LightGray" Margin="0,0,0,0" BorderBrush="IndianRed" BorderThickness="3" /> 
      </StackPanel> 
      <TabControl Height="234" Name="tabControl1" Width="1035" Margin="0,0,0,0"> 
       <TabItem Header="tabItem1" Name="tabItem1"> 
        <Grid Height="144" /> 
       </TabItem> 
      </TabControl> 
     </DockPanel> 
    </Grid> 
を助けてください

答えて

1

1)ブラウズコードは次のようなものでなければなりません:私はsimplifに試してみました

private void BrowseButton_Click(object sender, RoutedEventArgs e) 
{ 
    System.Windows.Forms.FolderBrowserDialog browse = new System.Windows.Forms.FolderBrowserDialog(); 
    browse.RootFolder= Environment.SpecialFolder.MyDocuments; 
    browse.SelectedPath = "C:\\InitalFolder\\SomeFolder"; 
    if (browse.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    { 
     txtBxBrowseTB.Text = browse.SelectedPath; 
    } 
} 

2) y xaml。これはあなたが行けるもののようですか?:

<Grid> 
    <Image Name="imgClientPhoto" Margin="0" Height="262" VerticalAlignment="Top" HorizontalAlignment="Left" ></Image> 
    <StackPanel VerticalAlignment="Stretch" > 
     <StackPanel VerticalAlignment="Top" Orientation="Horizontal" Height="30"> 
      <Button Name="BrowseButton" Content="Browse" Click="BrowseButton_Click" HorizontalAlignment="Right" Width="111" /> 
      <Label Name="label1" Width="69.75" FontSize="13" VerticalContentAlignment="Center" HorizontalContentAlignment="Right">Path:</Label> 
      <TextBox Name="txtBxBrowseTB" Width="200" Text="TextBox" VerticalContentAlignment="Center" TextWrapping="Wrap" TextChanged="BrowseTB_TextChanged"></TextBox> 
     </StackPanel> 
     <StackPanel> 
      <StackPanel Orientation="Vertical"> 
       <TextBox Height="50" Name="textBox1" /> 
       <ListBox Height="470" Name="listBox1" Background="LightGray" Margin="0,0,0,0" BorderBrush="IndianRed" BorderThickness="3" MouseLeftButtonUp="listBox1_MouseLeftButtonUp"> 
        <ListBoxItem>User1</ListBoxItem> 
        <ListBoxItem>User2</ListBoxItem> 
        <ListBoxItem>User3</ListBoxItem> 
        <ListBoxItem>User4</ListBoxItem> 
       </ListBox> 
      </StackPanel> 
      <TabControl Name="tabControl1" /> 
     </StackPanel> 
    </StackPanel> 
</Grid> 

また、タブ項目のヘッダーに閉じるボタンがあります。 xamlコントロールの多くのコンテンツプロパティと同様に、コンテンツは実際にはコントロールであり、テキストである必要はありません。ここで

 <TabControl Name="tabControl1" > 
      <TabItem Name="tabItem1" > 
       <TabItem.Header> 
        <StackPanel Orientation="Horizontal"> 
         <Label>TabHeader1</Label> 
         <Button Height="20" Width="20" FontWeight="Bold" Click="CloseTabButton_Click">X</Button> 
        </StackPanel> 
       </TabItem.Header> 
       <Grid Height="144"> 
        <ListView /> 
       </Grid> 
      </TabItem> 
     </TabControl> 

3)あなたは、動的にC#でタブを追加する方法を次のとおりです。

private void listBox1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    //Get selected item 
    ListBoxItem item = (ListBoxItem)listBox1.SelectedItem; 
    string itemText = item.Content.ToString(); 

    //Check if item is already added 
    foreach (TabItem tItem in tabControl1.Items) 
    { 
     if ((string)tItem.Tag == itemText) 
     { 
      //Item already added, just activate the tab 
      tabControl1.SelectedItem = tItem; 
      return; 
     } 
    } 

    //Build new tab item 
    TabItem tabItem = new TabItem(); 
    tabItem.Tag = itemText; 

    //First build the Header content 
    Label label = new Label(); 
    Button button = new Button(); 
    label.Content = itemText; 
    button.Content = "X"; 
    button.Height = 20; 
    button.Width = 20; 
    button.FontWeight = FontWeights.Bold; 
    button.Click += CloseTabButton_Click; //Attach the event click method 
    button.Tag = tabItem; //Reference to the tab item to close in CloseTabButton_Click 
    StackPanel panel = new StackPanel(); 
    panel.Orientation = Orientation.Horizontal; 
    panel.Children.Add(label); 
    panel.Children.Add(button); 
    tabItem.Header = panel; 

    //Then build the actual tab content 
    //If you need only the ListView in here, you don't need a grid 
    ListView listView = new ListView(); 
    //TODO: Populate the listView with what you need 
    tabItem.Content = listView; 

    //Add the finished tabItem to your TabControl 
    tabControl1.Items.Add(tabItem); 
    tabControl1.SelectedItem = tabItem; //Activate the tab 
} 

private void CloseTabButton_Click(object sender, RoutedEventArgs e) 
{ 
    //The tab item was set to button.Tag when it was added 
    Button button = (Button)sender; 
    TabItem tabItem = (TabItem)button.Tag; 
    if (tabItem != null) 
    { 
     button.Click -= CloseTabButton_Click; //Detach event handler to prevent memory leak 
     tabControl1.Items.Remove(tabItem); 
    } 
} 
+0

こんにちは、私はC#を使用しています。 (件名にC#が記載されています:)) 私はこのWPFとXAMLに非常に慣れています。 助けてください – Ramm

+0

こんにちは、 私はあなたを混乱させる場合は申し訳ありません。私のreq:私はリストボックス内の4人のユーザーがいる場合、それらをクリックすると、新しいタブを開く必要があります。したがって、すべてのnewtabについて、Listviewを追加する必要があります(このListviewはすべてのタブで共通です).aタブの「X」マークもタブを閉じます。 したがって、Listviewには、1.Workbook、2. Desc ...などが列として含まれます。 私はある意味があると思っています。 私はそれが必要かどうか説明することができます。 ありがとう Ramm – Ramm

+0

Hi Dreas、 私は質問を編集しました。 1.基本的な質問:ボタンにアクセスする方法は、ボタンが存在する場合、同じままになります にinturnが存在しますか?つまり、 Ramm

関連する問題