none
RadioButton为什么没有互斥? RRS feed

  • 问题

  • 大家好:)

    当我直接在界面中拖入两个或者多个RadioButton时,然后Run我的程序,就发生互斥。

    但是我做了一个实验,把两个RadioButton同时IsChecked=True,结果并没有互斥?运行时候也是两个RadioButton都是True的状态?



    当然,我使用代码把两个RadioButton都设置为True,却惊讶地发现只有最后一个RadioButton2为True。

     private void PhoneApplicationPage_Loaded(object senderRoutedEventArgs e)
            {
                radioButton1.IsChecked = true;
                radioButton2.IsChecked = true;
            }
    我的问题是:当同时把多个RadioButton设置成True的时候,是不是应该以最后一个为准?
    为什么设计器中不能智能做到这一点呢?谢谢了

    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月30日 5:52

答案

  • 你好

    或者你可以嘗試 設定 GropName properties


    E.G.

    <StackPanel>
        <RadioButton GroupName="colorgrp">Red</RadioButton>
        <RadioButton GroupName="colorgrp">Blue</RadioButton>
        <RadioButton GroupName="numgrp">1</RadioButton>
        <RadioButton GroupName="numgrp">2</RadioButton>
    </StackPanel>
    
    


    http://msdn.microsoft.com/zh-cn/library/ms745072(v=vs.85).aspx

    Please correct me if my concept is wrong


    Chi
    2011年9月30日 7:35
  • 我也认为可采用分组互斥的方式更好。

    <TextBlock Text="First Group:"  Margin="5" />
                    <RadioButton x:Name="TopButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="First Choice"  IsChecked="False" />
                    <RadioButton x:Name="MiddleButton" Margin="5" Checked="HandleCheck"
           GroupName="First Group" Content="Second Choice"  IsChecked="True" />
                    <TextBlock Text="Ungrouped:" Margin="5" />
                    <RadioButton x:Name="LowerButton" Margin="5" Checked="HandleCheck"
          Content="Third Choice" />
                    <TextBlock x:Name="choiceTextBlock" Margin="5" />

     

    如果在同一组中有多个RadioButton在XAML中设置为True,则加载时会出现错误。

    在代码中则以最后执行的代码为最终互斥选择的结果。

     private void HandleCheck(object sender, RoutedEventArgs e)
            {
                RadioButton rb = sender as RadioButton;
                choiceTextBlock.Text = "You chose: " + rb.GroupName + ": " + rb.Name;
            }

     


    Cedar
    2011年10月1日 2:32
    版主

全部回复