zoukankan      html  css  js  c++  java
  • silverlight 不能输入中文问题

    <param name="Windowless" value="true" />
    将调用silverlight页面的这句删除掉应该就能解决问题了

    1.将<param name="Windowless" value="true" />以上代码注释(删除)操作,虽然可以输入中文,但是silverlight嵌套html将会报错?想要解决silverlight嵌套html问题、silverlight无法输入中文问题,只能是换一种实现方法。具体操作如下
    1.自定义用户控件HtmlHost.cs

      1 using System;
      2 using System.Net;
      3 using System.Windows;
      4 using System.Windows.Controls;
      5 using System.Windows.Documents;
      6 using System.Windows.Ink;
      7 using System.Windows.Input;
      8 using System.Windows.Media;
      9 using System.Windows.Media.Animation;
     10 using System.Windows.Shapes;
     11 using System.Windows.Markup;
     12 using System.Windows.Browser;
     13 using System.Threading;
     14 
     15 namespace HtmlInSilverlight
     16 {
     17     [ContentProperty("SourceHtml")]
     18     public class HtmlHost : FrameworkElement
     19     {
     20         public static readonly DependencyProperty SourceHtmlProperty = DependencyProperty.Register("SourceHtml", typeof(string), typeof(HtmlHost), new PropertyMetadata(string.Empty, new PropertyChangedCallback(HtmlHost.SourceHtmlChanged)));
     21         public static readonly DependencyProperty SourceUriProperty = DependencyProperty.Register("SourceUri", typeof(Uri), typeof(HtmlHost), new PropertyMetadata(null, new PropertyChangedCallback(HtmlHost.SourceUriChanged)));
     22         private HtmlDocument _document;
     23         private HtmlElement _iframe;
     24         private EventHandler _documentready;
     25         private bool x9794bc5afbd6d4a3;
     26         private bool xe3e0019204361915;
     27         private HtmlElement _div;
     28 
     29         public event EventHandler DocumentReady
     30         {
     31             add
     32             {
     33                 EventHandler handler2;
     34                 EventHandler handler = this._documentready;
     35                 do
     36                 {
     37                     handler2 = handler;
     38                     EventHandler handler3 = (EventHandler)Delegate.Combine(handler2, value);
     39                     handler = Interlocked.CompareExchange<EventHandler>(ref this._documentready, handler3, handler2);
     40                 }
     41                 while (handler != handler2);
     42             }
     43             remove
     44             {
     45                 EventHandler handler2;
     46                 EventHandler handler = this._documentready;
     47                 do
     48                 {
     49                     handler2 = handler;
     50                     EventHandler handler3 = (EventHandler)Delegate.Remove(handler2, value);
     51                     handler = Interlocked.CompareExchange<EventHandler>(ref this._documentready, handler3, handler2);
     52                 }
     53                 while (handler != handler2);
     54             }
     55         }
     56 
     57         public HtmlHost()
     58         {
     59             base.Loaded += new RoutedEventHandler(this._Loaded);
     60             base.SizeChanged += new SizeChangedEventHandler(this._SizeChanged);
     61             base.LayoutUpdated += new EventHandler(this._LayoutUpdated);
     62         }
     63 
     64         protected virtual void OnDocumentReady(EventArgs e)
     65         {
     66             if (this._documentready != null)
     67             {
     68                 this._documentready(this, e);
     69             }
     70         }
     71 
     72         private void _Refresh()
     73         {
     74             Rect rect;
     75             Size renderSize;
     76             double num = 0;
     77             double num2 = 0;
     78             double num4 = 0;
     79             if (this._div == null)
     80             {
     81                 return;
     82             }
     83             goto Label_03E5;
     84         Label_0010:
     85             if (rect.Height > 0.0)
     86             {
     87                 goto Label_0148;
     88             }
     89         Label_0025:
     90             this._div.SetStyleAttribute("visibility", "hidden");
     91             this._div.SetStyleAttribute("display", "none");
     92             if ((((uint)num4) + ((uint)num)) >= 0)
     93             {
     94                 goto Label_0219;
     95             }
     96             goto Label_0090;
     97         Label_0069:
     98             if (rect.Width <= 0.0)
     99             {
    100                 goto Label_0025;
    101             }
    102             if (((uint)num2) >= 0)
    103             {
    104                 goto Label_0010;
    105             }
    106         Label_0090:
    107             if ((((uint)num) & 0) != 0)
    108             {
    109                 goto Label_0069;
    110             }
    111             if ((((uint)num) + ((uint)num4)) >= 0)
    112             {
    113                 goto Label_0010;
    114             }
    115             goto Label_0219;
    116         Label_0148:
    117             if (!this.xe3e0019204361915)
    118             {
    119                 HtmlPage.Document.Body.AppendChild(this._div);
    120                 this.xe3e0019204361915 = true;
    121                 goto Label_0194;
    122             }
    123         Label_0153:
    124             this._div.SetStyleAttribute("visibility", "visible");
    125             this._div.SetStyleAttribute("display", "inline");
    126             if ((((uint)num) & 0) != 0)
    127             {
    128                 goto Label_02A0;
    129             }
    130         Label_0194:
    131             num = rect.X;
    132             this._div.SetStyleAttribute("left", num.ToString() + "px");
    133             if ((((uint)num) + ((uint)num)) <= uint.MaxValue)
    134             {
    135                 this._div.SetStyleAttribute("top", rect.Y.ToString() + "px");
    136                 this._div.SetStyleAttribute("width", rect.Width.ToString() + "px");
    137                 this._div.SetStyleAttribute("height", rect.Height.ToString() + "px");
    138                 return;
    139             }
    140             if ((((uint)num2) + ((uint)num)) <= uint.MaxValue)
    141             {
    142                 goto Label_0090;
    143             }
    144         Label_0219:
    145             if (((uint)num2) >= 0)
    146             {
    147                 return;
    148             }
    149             goto Label_03E5;
    150         Label_02A0:
    151             if (renderSize.Width > 0.0)
    152             {
    153                 Size size2 = base.RenderSize;
    154                 if ((((uint)num4) + ((uint)num4)) <= uint.MaxValue)
    155                 {
    156                     if (0 != 0)
    157                     {
    158                         goto Label_0148;
    159                     }
    160                     while ((size2.Height > 0.0) && (base.Visibility == Visibility.Visible))
    161                     {
    162                         double num3 = 0;
    163                         Point location = base.TransformToVisual(Application.Current.RootVisual).Transform(new Point(0.0, 0.0));
    164                         rect = new Rect(location, base.RenderSize);
    165                         HtmlElement element = this.xe90f25b5dbb13eeb();
    166                         object property = element.GetProperty("offsetLeft");
    167                         if (property is double)
    168                         {
    169                             rect.X += (double)property;
    170                         }
    171                         object obj3 = element.GetProperty("offsetTop");
    172                         if (obj3 is double)
    173                         {
    174                             rect.Y += (double)obj3;
    175                             break;
    176                         }
    177                         if ((((uint)num4) - ((uint)num3)) <= uint.MaxValue)
    178                         {
    179                             break;
    180                         }
    181                         if ((((uint)num3) & 0) != 0)
    182                         {
    183                             goto Label_0153;
    184                         }
    185                     }
    186                     goto Label_0069;
    187                 }
    188             }
    189             else
    190             {
    191                 goto Label_0069;
    192             }
    193         Label_03A4: ;
    194             rect = new Rect(0.0, 0.0, 0.0, 0.0);
    195             renderSize = base.RenderSize;
    196             if ((((uint)num4) + ((uint)num)) <= uint.MaxValue)
    197             {
    198             }
    199             goto Label_02A0;
    200         Label_03E5:
    201             if (0 == 0)
    202             {
    203                 if (!HtmlPage.IsEnabled)
    204                 {
    205                     return;
    206                 }
    207                 goto Label_03A4;
    208             }
    209         }
    210 
    211         private void _Loaded(object sender, RoutedEventArgs e)
    212         {
    213             HtmlElement element;
    214             if (this.x9794bc5afbd6d4a3)
    215             {
    216                 return;
    217             }
    218             this.x9794bc5afbd6d4a3 = true;
    219             if (!HtmlPage.IsEnabled)
    220             {
    221                 goto Label_0026;
    222             }
    223             this._div = HtmlPage.Document.CreateElement("div");
    224             this._div.SetAttribute("id", "div" + this.GetHashCode());
    225             this._div.SetStyleAttribute("position", "absolute");
    226             this._div.SetStyleAttribute("visibility", "collapsed");
    227             element = this.xe90f25b5dbb13eeb();
    228             element.AttachEvent("onmove", new EventHandler(this._Moved));
    229             goto Label_004A;
    230         Label_0010:
    231             if (!Application.Current.Host.Settings.Windowless)
    232             {
    233                 //MessageBox.Show("Warning: The HtmlHost control should always be used with a windowless plugin. It cannot work reliably if this property is not specified.");
    234             }
    235         Label_0026:
    236             this.x8c7c45ccab715fbf();
    237             return;
    238         Label_0031:
    239             goto Label_0010;
    240         Label_004A:
    241             if (element != HtmlPage.Plugin)
    242             {
    243                 goto Label_0065;
    244             }
    245             if (-2147483648 != 0)
    246             {
    247                 goto Label_0010;
    248             }
    249             goto Label_0031;
    250         Label_0065:
    251             HtmlPage.Plugin.AttachEvent("onmove", new EventHandler(this._Moved));
    252             goto Label_0031;
    253         }
    254 
    255         private void IFrame_Loaded(object sender, EventArgs e)
    256         {
    257             HtmlWindow property = this._iframe.GetProperty("contentWindow") as HtmlWindow;
    258             do
    259             {
    260                 HtmlDocument document;
    261                 if (property != null)
    262                 {
    263                     document = property.GetProperty("document") as HtmlDocument;
    264                     if ((document == null))
    265                     {
    266                         return;
    267                     }
    268                 }
    269                 else
    270                 {
    271                     return;
    272                 }
    273                 this.Document = document;
    274             }
    275             while ((0 == 0) && (((0xff == 0) && (1 != 0)) || (0 != 0)));
    276         }
    277 
    278         private static void SourceUriChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    279         {
    280             ((HtmlHost)sender).x8c7c45ccab715fbf();
    281         }
    282 
    283         private void x8c7c45ccab715fbf()
    284         {
    285             if (!HtmlPage.IsEnabled)
    286             {
    287                 return;
    288             }
    289             goto Label_0107;
    290         Label_000F:
    291             this._Refresh();
    292             if (0 == 0)
    293             {
    294                 if (0 == 0)
    295                 {
    296                     return;
    297                 }
    298                 goto Label_0107;
    299             }
    300             goto Label_00E6;
    301         Label_0052:
    302             this._div.AppendChild(this.IFrame);
    303             this.IFrame.SetAttribute("src", this.SourceUri.ToString());
    304             goto Label_000F;
    305         Label_0080:
    306             this._div.RemoveChild((HtmlElement)this._div.Children[0]);
    307         Label_00AB:
    308             if (this._div.Children.Count > 0)
    309             {
    310                 goto Label_0080;
    311             }
    312             if (this.SourceUri == null)
    313             {
    314                 this._div.SetStyleAttribute("overflow", "auto");
    315                 this.SetDivHtml(this._div, this.SourceHtml);
    316                 if (0 == 0)
    317                 {
    318                     goto Label_000F;
    319                 }
    320             }
    321             else
    322             {
    323                 this._div.SetStyleAttribute("overflow", "hidden");
    324                 goto Label_0052;
    325             }
    326         Label_00E6:
    327             if ((0x7fffffff != 0) && (0x7fffffff != 0))
    328             {
    329                 goto Label_0080;
    330             }
    331             goto Label_0052;
    332         Label_0107:
    333             if (!this.x9794bc5afbd6d4a3)
    334             {
    335                 return;
    336             }
    337             goto Label_00AB;
    338         }
    339 
    340         private void _LayoutUpdated(object sender, EventArgs e)
    341         {
    342             this._Refresh();
    343         }
    344 
    345         private void _Moved(object sender, EventArgs e)
    346         {
    347             this._Refresh();
    348         }
    349 
    350         private HtmlElement xe90f25b5dbb13eeb()
    351         {
    352             HtmlElement element2;
    353             HtmlElement plugin = HtmlPage.Plugin;
    354             if (HtmlPage.Plugin.Parent.TagName.ToLower() == "div")
    355             {
    356                 if (HtmlPage.Plugin.Parent.Children.Count == 1)
    357                 {
    358                     return HtmlPage.Plugin.Parent;
    359                 }
    360                 if (HtmlPage.Plugin.Parent.Children.Count == 2)
    361                 {
    362                     if (HtmlPage.Plugin.Parent.Children[0] != HtmlPage.Plugin)
    363                     {
    364                         return plugin;
    365                     }
    366                     element2 = HtmlPage.Plugin.Parent.Children[1] as HtmlElement;
    367                     if (element2 == null)
    368                     {
    369                         return plugin;
    370                     }
    371                     if (!(element2.TagName.ToLower() == "iframe"))
    372                     {
    373                         return plugin;
    374                     }
    375                     return HtmlPage.Plugin.Parent;
    376                 }
    377                 return plugin;
    378             }
    379             return plugin;
    380         }
    381 
    382         private void _SizeChanged(object sender, SizeChangedEventArgs e)
    383         {
    384             this._Refresh();
    385         }
    386 
    387         private void SetDivHtml(HtmlElement _div, string html)
    388         {
    389             if (HtmlPage.BrowserInformation.Name == "Netscape")
    390             {
    391                 _div.SetProperty("innerHTML", html);
    392             }
    393             else
    394             {
    395                 _div.SetAttribute("innerHTML", html);
    396             }
    397         }
    398 
    399         private static void SourceHtmlChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    400         {
    401             ((HtmlHost)sender).x8c7c45ccab715fbf();
    402         }
    403 
    404         public HtmlDocument Document
    405         {
    406             get
    407             {
    408                 return this._document;
    409             }
    410             private set
    411             {
    412                 if (value != this._document)
    413                 {
    414                     this._document = value;
    415                     if (this._document == null)
    416                     {
    417                         return;
    418                     }
    419                     this.OnDocumentReady(EventArgs.Empty);
    420                 }
    421             }
    422         }
    423 
    424         public HtmlWindow Window
    425         {
    426             get
    427             {
    428                 HtmlWindow property = this._iframe.GetProperty("contentWindow") as HtmlWindow;
    429                 return property;
    430             }
    431         }
    432 
    433         public string SourceHtml
    434         {
    435             get
    436             {
    437                 return (string)base.GetValue(SourceHtmlProperty);
    438             }
    439             set
    440             {
    441                 base.SetValue(SourceHtmlProperty, value);
    442             }
    443         }
    444 
    445         public Uri SourceUri
    446         {
    447             get
    448             {
    449                 return (Uri)base.GetValue(SourceUriProperty);
    450             }
    451             set
    452             {
    453                 base.SetValue(SourceUriProperty, value);
    454             }
    455         }
    456 
    457         private HtmlElement IFrame
    458         {
    459             get
    460             {
    461                 if (this._iframe != null)
    462                 {
    463                     return this._iframe;
    464                 }
    465                 if (HtmlPage.IsEnabled)
    466                 {
    467                     this._iframe = HtmlPage.Document.CreateElement("iframe");
    
    468                     this._iframe.SetStyleAttribute("position", "absolute");
    469                     this._iframe.SetStyleAttribute("width", "100%");
    470                     this._iframe.SetStyleAttribute("height", "100%");
    471                     this._iframe.SetStyleAttribute("border", "0px");
    472                     this._iframe.SetAttribute("border", "0");
    473                     this._iframe.SetAttribute("frameBorder", "0");
    474                     this._iframe.AttachEvent("onload", new EventHandler(this.IFrame_Loaded));
    475                     HtmlPage.Document.Body.AppendChild(this._iframe);
    476                 }
    477                 return this._iframe;
    478             }
    479         }
    480     }
    481 }
    View Code

    2.将自定义用户控件引用到页面中MainPage.xaml

     1 <UserControl x:Class="HtmlInSilverlight.MainPage"
     2     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     3     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     4     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     5     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     6     mc:Ignorable="d"
     7     xmlns:Html="clr-namespace:HtmlInSilverlight" 
     8     d:DesignHeight="300" d:DesignWidth="400">
     9 
    10     <Grid x:Name="LayoutRoot" Background="White">
    11         <Grid.RowDefinitions>
    12             <RowDefinition Height="25"></RowDefinition>
    13             <RowDefinition></RowDefinition>
    14             </Grid.RowDefinitions>
    15             <TextBox Text="" Grid.Row="0"></TextBox>
    16         <Html:HtmlHost Grid.Row="1" x:Name="htmlControl" SourceUri="http://hao.360.cn"></Html:HtmlHost>
    17 
    18     </Grid>
    19 </UserControl>
    View Code

    这样就ok了。

    注意:将.aspx中<param name="Windowless" value="true" />这段话注释或者删除。

     3.此做法可能还会出现异常

    4.最终做法

     Label_0153:
                this._div.SetStyleAttribute("visibility", "visible");
                this._div.SetStyleAttribute("display", "inline");
                this._div.SetStyleAttribute("background", "White");
                if ((((uint)num) & 0) != 0)
                {
                    goto Label_02A0;
                }

    将这段代码替换HtmlHost.cs中的代码,与HtmlHost.cs类库不同的是 多加了

    this._div.SetStyleAttribute("background", "White"); 
    具体什么原因,我也不清楚
  • 相关阅读:
    kafka那些事儿
    netty
    kafka为什么吞吐量高,怎样保证高可用
    通用mybatis单表操作接口
    P1058立体图
    P2258 子矩阵
    P1439 【模板】最长公共子序列(LCS)
    洛谷P2672 推销员
    P3373线段树2
    P5018 对称二叉树
  • 原文地址:https://www.cnblogs.com/zxbzl/p/3934450.html
Copyright © 2011-2022 走看看