我正在尝试设计一个显示进程当前状态的控件,如下图所示.
因此,我们有一个圆形显示状态,其中包含里程碑或检查点的彩色部分.在图像中,我们已经完成了前两个阶段,第三阶段已经完成了70%.
我知道Jquery中有一个非常相似的控件.但我不确定,如果我可以使用Xamarin Forms中的第三方控件.如果没有第三方控制,我应该如何进行设计.
我应该只为不同阶段创建图像并显示图像吗?或者我应该创建一个自定义控件,它可以采用两个值,"里程碑"和"percentage_complete",然后设计可能是一个饼图?
我必须使用XNA在3d模型上创建一个二维菜单.现在,我已经创建了2D的spritebatch和一个3d模型.但是,正如我已经注意到的,并且在其他地方被提及,由于z缓冲区问题,模型没有正确显示.根据教程,我应该在draw方法中再次启用DepthBuffer.但是,不知何故,当我使用时:
GraphicsDevice.DepthStencilState.DepthBufferEnable = true;
Run Code Online (Sandbox Code Playgroud)
调试期间代码抛出错误,说,
无法更改只读DepthStencilState.状态对象在第一次绑定到GraphicsDevice时变为只读.要更改属性值,请创建一个新的DepthStencilState实例.
现在,我也试图创建一个新的DepthStencilState实例,但是,即使这样似乎也不起作用.我总是得到相同的错误,即使帮助文档建议它的读/写值.
请帮我弄清楚如何正确显示3D模型.
这是Draw代码供参考.
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
Matrix[] transforms = new Matrix[myModel.Bones.Count];
myModel.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in myModel.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
//effect.DirectionalLight0.Enabled = true;
//effect.DirectionalLight0.DiffuseColor = Color.AntiqueWhite.ToVector3();
//effect.DirectionalLight0.Direction = new Vector3(0, 0, 0);
effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(myModelRotation) * Matrix.CreateTranslation(myModelPosition);
effect.View = Matrix.CreateLookAt(new Vector3(0, 0, 3000), Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45f),
GraphicsDevice.Viewport.AspectRatio, 1, 5000);
}
mesh.Draw();
}
spriteBatch.Begin();
spriteBatch.Draw(myTexture, new Vector2(0, 0), Color.White);
spriteBatch.End();
DepthStencilState d …Run Code Online (Sandbox Code Playgroud) 我刚刚开始研究Web应用程序,并学习使用ASP.Net.我遇到过两种在HTML页面中添加脚本的方法.一种是使用脚本标记,另一种是使用<% ... %>标记.但是,我无法弄清楚,两者之间有什么区别,在哪种情况下我应该选择哪一个?
我有一个控件,我用于我的新应用程序.此控件具有常规属性.
Public Property Value() As String
Get
If AutoCompleteTextBox.SearchText Is Nothing Then
Return String.Empty
Else
Return AutoCompleteTextBox.SearchText.ToString.Trim
End If
End Get
Set(value As String)
AutoCompleteTextBox.SearchText = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
编辑:
所以,经过多次尝试,我终于到了这个阶段.
Public Shared ValueProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(String), GetType(AutoCompleteBox))
Public Property Value() As String
Get
Return Me.GetValue(ValueProperty).ToString
End Get
Set(value As String)
Me.SetValue(ValueProperty, value)
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
Run Code Online (Sandbox Code Playgroud)
这是依赖属性.此属性仍然没有约束力.输出窗口中没有显示绑定错误.
Text="{Binding RelativeSource={RelativeSource Self}, Path=Value, Mode=TwoWay}"
Run Code Online (Sandbox Code Playgroud)
这是我的绑定方法.我不知道我还能做什么.至少如果出现错误,我本可以找到一些东西.没有任何错误,我只是一个没头的鸡.
我有一个非常具体的要求.在我的网络应用程序中,我必须从数据库值和电子邮件正文生成pdf发票.我可以使用SMTP轻松发送它,这是完美的.
但是,问题是我们不能依靠系统来永远完美,而这是一张发票.因此,我们需要打开默认邮件客户端而不是使用SMTP.现在,我有以下代码
//Code to create the script for email
string emailJS = "";
emailJS += "window.open('mailto:testmail@gmail.com?body=Test Mail" + "&attachment=" + emailAttachment + "');";
//Register the script for post back
ClientScript.RegisterStartupScript(this.GetType(), "mailTo", emailJS, true);
Run Code Online (Sandbox Code Playgroud)
这将完美地打开电子邮件,但没有附件正常工作.路径应该是/Web/Temp/123.pdf.
如果我使用与下面的普通网址相同的路径,它会在新窗口中正确打开文件.
ClientScript.RegisterStartupScript(this.GetType(), "newWindow", "window.open('/Web/Temp/123.pdf');", true);
Run Code Online (Sandbox Code Playgroud)
因此,显然文件存在,但它存在于服务器上.另一方面,Outlook在客户端计算机上打开.所以,我不能使用完全确定的路径C:\Web\Temp\123.pdf.如果我尝试,它将尝试在客户端计算机上找到该文件,文件夹本身可能不存在.
我想弄清楚我能在这做什么.如果有另一种方法我应该尝试.
PS不,我不能直接发送电子邮件.这对我来说将来会造成更大的问题.
编辑:我也发现了一个奇怪的问题.如果我在附件中的文件路径中添加双引号,则会自动添加\.@"&attachment=""" + Server.MapPath(emailAttachment) + @"""');"给我输出为&attachment=\"C:\Web\Temp\123.pdf\".
我试图逃避这个双引号,并以某种方式添加斜线.我知道这是一个完全不同的问题,但我想在这里应该提一下,而不是创建一个新问题.
编辑:我尝试了localhost上的固定路径.所以,我基本上是在存储文件的同一台机器上测试应用程序.仍然没有任何依恋.
string emailJS = "";
emailJS += @"window.open('mailto:jitendragarg@gmail.com?body=Test Mail" + emailAttachment + @"&attachment=";
emailJS += @"""D:\Dev\CSMS\CSMSWeb\Temp\635966781817446275.Pdf""');";
//emailJS += Server.MapPath(emailAttachment) + @"');";
//Register the script …Run Code Online (Sandbox Code Playgroud) 我和我的队友就此进行了简短的讨论.他说,如果我在文本框中输入一个数字,并尝试稍后使用textbox.text或val(textbox.text)来使用该值,我将不需要将该值解析为整数.据他说,如果text属性值是全数,你可以直接得到整数值,而不是字符串.
所以,如果我有textBox1.Text = "12345",那么下次,如果我使用intABC = textBox1.Text,它不会抛出错误.这样对吗?C#或其他.Net语言是否进行了隐式转换?此外,代码存储"12345"为字符串还是整数?这个值占用多少内存,5个字符为5个字节,整数为2个字节?
我有一些代码捕获异常,回滚事务然后重新抛出异常.
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw exSys ;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用此代码,VS代码分析会抛出警告说
使用不带参数的'throw',以保留最初引发异常的堆栈位置.
如果我使用代码
catch ( Exception exSys ) {
bqBusinessQuery.RollBackTransaction();
throw;
}
Run Code Online (Sandbox Code Playgroud)
然后我收到警告说
变量'exSys'已声明但从未使用过
我该如何解决这个问题?
编辑 我试过这个方法,但它不起作用.system.exception类需要额外的消息以及内部异常.如果我这样做,它将抛出一条新消息,覆盖原始异常中的消息.我不想得到新的异常,我想用相同的消息抛出相同的异常.
catch (System.Exception ex)
{
throw new System.Exception(ex);
}
Run Code Online (Sandbox Code Playgroud)
编辑
catch (System.Exception ex)
{
throw new System.Exception("Test",ex);
}
Run Code Online (Sandbox Code Playgroud)
尝试过这种方法.然后使用手动导致异常throw new Exception("From inside");.现在,ex.Message返回"Test"而不是"From inside".我希望保留"从内部"消息.这种建议的更改会导致错误显示代码无处不在.:/