我创建了一个网格,并且当我单击页面中的"保存"按钮时想要访问它.如何循环网格对象以获取其元素及其值?
我的程序:包含一个包含少量文本框和一个按钮的表单."默认打印机" 在我的计算机上设置为Adobe PDF.
我的目标:当用户点击"打印"按钮时,想要截取表单/ usercontrol的屏幕截图.然后屏幕截图以.pdf格式保存在桌面上.
我的问题:我在代码中遇到两个问题:
问题1:程序捕获的屏幕截图在打印时不适合页面.

我希望截图图像在.pdf的一页上适合这样:

码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Text = "Print Form";
button1.Click += new EventHandler(button1_Click);
printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
this.Controls.Add(button1);
}
private void button1_Click(object sender, EventArgs e)
{
CaptureScreen();
printDocument1.Print();
}
Bitmap memoryImage;
private void CaptureScreen()
{
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
Graphics …Run Code Online (Sandbox Code Playgroud) 我是一名学生,正在构建一个C#WPF应用程序.它有三个窗口:
登录窗口
创建帐户窗口
和主应用程序窗口.
我上传了一个图来显示我想要实现的导航类型:

我认为在另一个窗口的close/load事件中显示/隐藏窗口是不正确的.
有人能告诉我实施此导航的正确方法吗?
另外,将三个窗口作为应用程序类的私有属性是一个好习惯吗?
最后一个窗口具有框架控件以支持页面导航.再次,使MainWindow应用程序的三个页面私有属性更好吗?
如果这是如此明显或容易做到,我很抱歉.谢谢
I'm trying to figure out if there is a way to color individual cells on a color scale. In particular, I am hoping to get something like the Bonus column in the following:

Currently, I've setup my datagrid's columns background property to bind to the following converter:
public class NameToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double? input = value as double?;
if(input<-5)
{
return Brushes.MediumVioletRed;
}
if(-5<=input && input<-0.5)
{
return …Run Code Online (Sandbox Code Playgroud) 在我的Windows应用程序中,我通过将AcceptsReturn属性设置为True来创建多行文本框.它允许用户在文本框中输入多行文本.此外,我想每次都做一些事情,在文本框中按下Return/Enter键.事件处理程序代码如下......
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
// do something here
}
Run Code Online (Sandbox Code Playgroud)
看来,如果将AcceptsReturn设置为True并按下Return键,则根本不会调用此事件处理程序.正确检测到任何其他按键.如果AcceptsReturn未设置为True并且按下Return键,则调用事件处理程序并检测返回键按下就好了.这样做的问题是按下Return键不会使用户前进到文本框中的新行(如预期的那样).所以,我希望按下返回键以正确地将用户推进到文本框中的新行,并且我希望能够检测到返回键按下.我的方法有误吗?有一个更好的方法吗?
我正在使用C#在WPF中创建一个应用程序,其中用户填充数据网格,然后将信息存储在名为smb1的DataTable中.以下代码适用于将数据插入SQL数据库,但是当我修改代码进行更新时,它不起作用.有谁知道如何修改我的代码以允许更新,因为在Visual Studio中运行我的应用程序时没有抛出任何错误.我必须补充说,无法在数据网格中编辑"设备"列,因此返回的数据与从数据库中获取的数据相同,以便更新的行将使用WHERE子句与SQL数据库中的设备行匹配.下面是原始插入代码以及我更新数据库的尝试.
插入代码
SqlConnection con = new SqlConnection(MyConnectionString);
string SqlCmdText = "Insert into SHIFTLOG Values(@EQUIPMENT,@BATCHNO,@PRODUCTNO,@STATUS,@DATE,@PERIOD,@MACHINE)";
SqlCommand sc = new SqlCommand(SqlCmdText, con);
con.Open();
foreach (DataRow row in smb1.Rows)
{
sc.Parameters.Clear();
sc.Parameters.AddWithValue("@EQUIPMENT", row["EQUIPMENT"]);
sc.Parameters.AddWithValue("@BATCHNO", row["BATCHNO"]);
sc.Parameters.AddWithValue("@PRODUCTNO", row["PRODUCTNO"]);
sc.Parameters.AddWithValue("@STATUS", row["STATUS"]);
sc.Parameters.AddWithValue("@DATE", DateTime.Now.ToString("yyyy-MM-dd"));
sc.Parameters.AddWithValue("@PERIOD", DateTime.Now.ToString("tt"));
sc.Parameters.AddWithValue("@MACHINE", "SMB1");
sc.ExecuteNonQuery();
}
con.Close();
Run Code Online (Sandbox Code Playgroud)
尝试更新代码
SqlConnection con = new SqlConnection(MyConnectionString);
string SqlCmdText = "UPDATE SHIFTLOG SET EQUIPMENT='@EQUIPMENT',BATCHNO='@BATCHNO',PRODUCTNO='@PRODUCTNO',STATUS='@STATUS',DATE='2013-09-12',PERIOD='@PERIOD',MACHINE='@MACHINE' WHERE EQUIPMENT='@EQUIPMENT'";
SqlCommand sc = new SqlCommand(SqlCmdText, con);
con.Open();
foreach (DataRow row in smb1.Rows)
{
sc.Parameters.Clear();
sc.Parameters.AddWithValue("@EQUIPMENT", row["EQUIPMENT"]);
sc.Parameters.AddWithValue("@BATCHNO", row["BATCHNO"]);
sc.Parameters.AddWithValue("@PRODUCTNO", …Run Code Online (Sandbox Code Playgroud) 我是WPF的菜鸟.希望我能找到答案.
例如,我有一个List<Customer>,它绑定到dataGrid.如果我将新客户添加到列表中,并且我没有看到datagrid在那里添加新行.
<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" Height="318">
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName, Mode=TwoWay}" />
<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="80" Source="{Binding Image,Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Data;
namespace DataGrid
{
public class MainWindowViewModel
{
public ICollectionView Customers { get; private set; }
public ICollectionView GroupedCustomers { get; private set; }
public List<Customer> _customers { get; set; }
public MainWindowViewModel()
{
_customers …Run Code Online (Sandbox Code Playgroud)