首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Margin调整控件的位置解决思路

2012-06-16 
Margin调整控件的位置我想实现调整一个控件在其容器控件中的位置,我使用了margin进行调整,代码如下:C# cod

Margin调整控件的位置
我想实现调整一个控件在其容器控件中的位置,我使用了margin进行调整,代码如下:

C# code
// xaml部分<Window x:Class="MarginTest.Window1"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    Title="Window1" Height="300" Width="300">    <Grid x:Name="outsidegrid" Background="Black" MouseLeftButtonDown="outsidegrid_MouseLeftButtonDown" MouseRightButtonDown="outsidegrid_MouseRightButtonDown">        <Grid x:Name="insidegrid" Background="LightBlue" Width="200" Height="200">            <Grid x:Name="rectGrid" Background="Red" Width="50" Height="50" HorizontalAlignment="Left" VerticalAlignment="Top">                            </Grid>        </Grid>    </Grid></Window>

C# code
// C#代码部分 /// <summary>    /// Interaction logic for Window1.xaml    /// </summary>    public partial class Window1 : Window    {        public Window1()        {            InitializeComponent();        }        private void outsidegrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)        {            rectGrid.Margin =                new Thickness(-20, -20, 0, 0);        }        private void outsidegrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e)        {            rectGrid.Margin =                new Thickness(180, 180, 0, 0);        }    }

用意就是想在左键按下的时候将rectGrid移动到insidegrid的左上角,按下右键的时候将rectGrid移动到insidegrid的右下角。
问题发生了:
当我按下左键的时候,rectGrid移动到了insidegrid的左上角,但是超出insidegrid的部分被显示出来了,也就是看到了rectGrid的一部分超出到insidegrid外边去了(并且超出的部分被显示出来了),而当我按下右键的时候,rectGrid被移动到了insidegrid的右下角,但这时,rectGrid超出insidegrid的部分却没有被显示,请问这是为什么呢?
如果我想在左上或者右下角,rectGrid超出其容器控件insidegrid的部分都被显示(或都被隐藏)应该如何操作呢?
多谢指点!

[解决办法]
加了margin 你需要把控件宽度变窄。。。。
HTML的占位是width+padding+border+margin

看看HTML教程吧,别做拖控件的

热点排行