小编Bro*_*ter的帖子

如何从用户控件中引发自定义路由事件?

在我的用户控件中,我有一个按钮,单击该按钮将引发自定义路由事件.我试图提高它,但它不会在MainWindow.xaml中被触发.

用户控件中按钮的Xaml:

<Button x:Name="PART_Add" Content="+" Grid.Column="3" Margin="0,0,0,0" Style="{DynamicResource dTranspButton}" Click="btnAdd_Click"/>
Run Code Online (Sandbox Code Playgroud)

UserControl C#代码:

//AddClick Event

        public static readonly RoutedEvent AddClickEvent = EventManager.RegisterRoutedEvent("AddClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(dCB_Props));

        public event RoutedEventHandler AddClick
        {
            add { AddHandler(AddClickEvent, value); }
            remove { RemoveHandler(AddClickEvent, value); }
        }

        void RaiseAddClickEvent()
        {            
            RoutedEventArgs newEventArgs = new RoutedEventArgs(dCB_Props.AddClickEvent);
        }

        protected void OnAddClick()
        {
            RaiseAddClickEvent();
        }

//objects events

        private void btnAdd_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            RaiseAddClickEvent();
        }
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml中UserControl实例的Xaml代码:

<local:dCB_Props x:Name="cb1" Margin="41.166,0,36.19,25" VerticalAlignment="Bottom" Height="30" Width="141" AddClick="dCB_Props_AddClick">
    <local:dCB_Props.Items>
        <ComboBoxItem Content="item1"/>
    </local:dCB_Props.Items>
</local:dCB_Props>
Run Code Online (Sandbox Code Playgroud)

应该在MainWindow.xaml.cs中触发的C#代码: …

c# wpf user-controls routed-events

11
推荐指数
1
解决办法
2万
查看次数

为什么我的解密文本中出现了随机字符?

介绍

我正在尝试加密和解密文本,有时,特别是对于较大的文本,随机字符出现在解密的文本中.我在System.Security.Cryptography命名空间内使用AES加密技术,我正在尝试加密的文本将是一个URL和一些信息,例如页面标题.我在下面提供了一个例子以及我尝试过的内容.我还编写了两种加密和解密方法,减去输出到调试窗口的任何行.使用的Key和IV应该不是问题,因为现在它们将是不变的.

我认为明智的做法是指出它18/01/2013;18/01/2013在预期的单独事件中加密和解密.

说我想解密这个文本:

Barnabe Googes Information & Homepage | Search and Research on BarnabeGooge.com;18/01/2013;18/01/2013;;http://www.googe.com

默认情况下,它使用UTF-8,它将加密为:

?????????????????????????????????????????????????????????????????

并解密回:

Barnabe Googes Information & Homepage | Search and Research on B???Ax2?!??f?M]18/01/20?;18/01[?;>??l?????m??*-??+??^A[=?

我尝试过的

  • 我试图改为其他编码,但UTF-8似乎对解密文本的影响最小.
  • 改为不同类型的填充,但Padding.Zeros似乎是最好的.我也不能使用,Padding.None因为它抛出了NotSupportedException: bad data length.
  • 改为ModeCBC(不是它应该重要).
  • 刷新/关闭CryptoStream以便它可以刷新最后的块或其他东西.
  • 为了防止故障与标题有关,我习惯WebUtility.HtmlDecode()解码标题,但它并没有影响它.

加密方法

您可以看到,下面的加密使用AES加密.我想指出,key并且IV这两个全局字符串与加密和解密方法在同一个类中.我这样做的原因是乱搞不同的编码,并且CryptographyServiceProviders,如果偶然的随机变化有效.请忽略它们,因为它们是不变的,不会影响最终的加密/解密.

public static byte[] EncryptStringToBytes(string plainText, Encoding Enc)
{

    if (plainText == null || plainText.Length <= 0)
            throw new ArgumentNullException("plainText"); …
Run Code Online (Sandbox Code Playgroud)

c# cryptography aes aescryptoserviceprovider

10
推荐指数
1
解决办法
2976
查看次数