任何人都可以告诉我如何使用.NET中的Office Interop(c#)将Excel(2007或更高版本)中的超链接从一个工作表中的单元格添加到另一个工作表中的单元格
例如:从Sheet1 Cell A1到Sheet2 Cell B10的超链接
我有一段非常简单的代码(仅用于测试):
import smtplib
import time
server = 'smtp.myprovider.com'
recipients = ['johndoe@somedomain.com']
sender = 'me@mydomain.com'
message = 'Subject: [PGS]: Results\n\nBlaBlaBla'
session = smtplib.SMTP(server)
session.sendmail(sender,recipients,message);
Run Code Online (Sandbox Code Playgroud)
这有效,但问题是电子邮件客户端不显示发件人.我希望能够在电子邮件中添加发件人姓名.建议?
使用一组Anchorables设置AvalonDock时,例如:
<a:LayoutRoot>
<a:LayoutPanel Orientation="Horizontal">
<a:LayoutAnchorablePane>
<a:LayoutAnchorable Title="A1">
<!-- content -->
</a:LayoutAnchorable>
<a:LayoutAnchorable Title="A2">
<!-- content -->
</a:LayoutAnchorable>
</a:LayoutAnchorablePane>
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)
DockingManager(或AvalonDock中的其他东西)是否有内置的方式来管理已关闭的Anchorables?它们是否存储在某个地方的集合中,以便可以检索并再次显示它们?
例如,用户从上面的代码中关闭第一个(A1),会发生什么?
如何再次显示?
处理关闭和恢复锚点的典型工作流程是什么?
我有一个FlowDocumentScrollViewer我想在添加文本时自动滚动到底部.
<FlowDocumentScrollViewer Name="Scroller">
<FlowDocument Foreground="White" Name="docDebug" FontFamily="Terminal">
<Paragraph Name="paragraphDebug"/>
</FlowDocument>
</FlowDocumentScrollViewer>
Run Code Online (Sandbox Code Playgroud)
在代码中我向段落添加了内联,但是当有很多文本时,我希望能够简单地使用代码向下滚动而不是让用户这样做.
有什么建议?
我需要对数据库中的各个表执行一些计数
,我想将这些计数合并到一个结果中.
Conider以下查询:
SELECT 100 As SomeCount
SELECT 200 As SomeOtherCount
SELECT 300 As YetAnotherCount
Run Code Online (Sandbox Code Playgroud)
如果我使用它们UNION,每个结果将是最终结果中的一行:
SELECT 100 As SomeCount
UNION
SELECT 200 As SomeOtherCount
UNION
SELECT 300 As YetAnotherCount
Run Code Online (Sandbox Code Playgroud)
输出:
> SomeCount
> ---------
> 100
> 200
> 300
Run Code Online (Sandbox Code Playgroud)
我想要的是
> SomeCount | SomeOtherCount | YetAnotherCount
> --------------------------------------------
> 100 | 200 | 300
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种方法是"命名"结果是使用类似这样的东西:
SELECT 'SomeCount' As Name, 100 As Value
UNION ALL
SELECT 'SomeOtherCount', 200
UNION ALL
SELECT 'YetAnotherCount', 300
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果如下:
> Name | …Run Code Online (Sandbox Code Playgroud) 将一些东西绑定到ListBox的SelectedIndex很容易,但我希望ListBox中的每个项都能够绑定到列表中的索引.
可能听起来很奇怪,所以这就是我要做的事情:
<DataTemplate x:Key="ScenarioItemTemplate">
<Border
Margin="8,2,8,2"
Background="#FF3C3B3B"
BorderBrush="#FF797878"
BorderThickness="2"
CornerRadius="5">
<DockPanel>
<DockPanel DockPanel.Dock="Top" Margin="0,2,0,0">
<Label HorizontalAlignment="Left"
DockPanel.Dock="Left"
FontWeight="Heavy"
Foreground="White"
Content="{Binding Path=Position}"
MinWidth="50"/>
<Label
Content="{Binding Path=Name}"
DockPanel.Dock="Left"
FontWeight="Heavy"
Foreground="white"/>
<Label
Content="{Binding Path=Header}"
Foreground="white"
DockPanel.Dock="Left"/>
<TextBlock HorizontalAlignment="Right"
Background="#FF3C3B3B"
DockPanel.Dock="Left" Foreground="White" FontWeight="Heavy">
<Hyperlink Click="CloseHyperlink_Click" Tag="">X</Hyperlink>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
我想将超链接的TAG属性绑定到相关项的索引.因此,当用户单击超链接时,我可以使用该超链接的TAG属性确定导致事件的项目.
var hyperlink = (Hyperlink)sender;
var index = Convert.ToInt32(hyperlink.Tag);
Run Code Online (Sandbox Code Playgroud)
建议?
所以在"清洁代码"一书中有"做一件事"的规则.但是我们真的需要走得多远.
例如以下语句:
Settings.Default.BaudRate = baudRate;
Settings.Default.COMPort = port;
Settings.Default.DataBits = dataBits;
Settings.Default.Handshake = handshake;
Settings.Default.Parity = parity;
Settings.Default.ReadTimeout = readTimeout;
Settings.Default.WriteTimeout = writeTimeout;
Settings.Default.CommunicationTimeout = communicationTimeout;
Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
好的,确定这里有不止一个声明,但它确实让我觉得他们只是做了一件事.保存设置.
我有一个功能.你真的会采用这个appart并为每个设置设置一个方法吗?
你什么时候坚持这个规则什么时候不遵守?
我正在寻找如何在使用 TcpListener 时检测“客户端断开连接”。
所有的答案似乎都与这个类似: TcpListener:如何检测客户端断开连接?
基本上,从流中读取,如果 Read() 返回 0,则客户端已断开连接。
但这是假设客户端在它发送的每个数据流之后断开连接。我们在 TCP 连接/断开开销既缓慢又昂贵的环境中运行。
我们建立一个连接,然后我们发送一些请求。
伪代码:
client.Connect();
client.GetStatus();
client.DoSomething();
client.DoSomethingElse();
client.AndSoOn();
client.Disconnect();
Run Code Online (Sandbox Code Playgroud)
Connect 和 Disconnect() 之间的每次调用都会向服务器发送一个数据流。服务器知道如何分析和处理流。
如果让 TcpListener 在不断开连接的情况下循环读取,它会读取并处理所有消息,但是在客户端断开连接后,服务器无法知道这一点,并且永远不会释放客户端并接受新消息。
var read = client.GetStream().Read(buffer, 0, buffer.Length);
if (read > 0)
{
//Process
}
Run Code Online (Sandbox Code Playgroud)
如果我让 TcpListener 在 read == 0 时删除客户端,它只接受第一个数据流,然后立即删除客户端。
当然,这意味着新客户端可以连接。
调用之间没有人为延迟,但就计算机时间而言,两次调用之间的时间当然是“巨大的”,因此总会有 read == 0 的时间,即使这并不意味着客户端已经或应该断开连接。
var read = client.GetStream().Read(buffer, 0, buffer.Length);
if (read > 0)
{
//Process
}
else
{
break; //Always executed as soon as the first stream of data has …Run Code Online (Sandbox Code Playgroud) 我试图拦截粘贴到WPF文本框中的数据.
例如,用户使用Windows剪切工具创建屏幕捕获,该工具会自动将图像数据放在剪贴板上.这里的想法是允许用户在TextBox上简单地按CTRL + V,这样我就可以拦截它,检查它是否是数据,然后随意做任何事情.
public class PasteBehavior : Behavior<UIElement>
{
protected override void OnAttached()
{
base.OnAttached();
DataObject.AddPastingHandler(AssociatedObject, new DataObjectPastingEventHandler(OnPaste));
}
protected override void OnDetaching()
{
base.OnDetaching();
}
private void OnPaste(object sender, DataObjectPastingEventArgs e)
{
if (e.SourceDataObject.GetDataPresent(DataFormats.Text))
return;
var formats = e.SourceDataObject.GetFormats();
foreach (var format in formats)
Console.WriteLine(format);
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的行为,当文本粘贴到TextBox中时,代码会被触发,但看起来TextBox不允许粘贴任何其他内容,因此如果它不是文本,它甚至都不会到达此代码.
我想知道,是否有需要在TextBox上设置的属性,或者其他允许粘贴数据的属性(即使TextBox永远不能显示该数据)
如果没有,那么哪些UI元素允许粘贴数据,因为我也可以将其用于我的优势.
更新
有人告诉我,我必须使用RichTextBox来允许这样粘贴
,这不是我可以使用的东西,所以我决定采取一种不同的(有些hacky)方法:
public class PasteBehavior : Behavior<UIElement>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.PreviewKeyDown += AssociatedObject_PreviewKeyDown;
}
void AssociatedObject_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == …Run Code Online (Sandbox Code Playgroud) 在活动中,我有以下内容:
var flipper = FindViewById<ViewFlipper>(Resource.Id.flipper);
flipper.Touch += flipper_Touch;
Run Code Online (Sandbox Code Playgroud)
触摸处理程序的基本实现如下所示:
float oldTouchValue = 0;
void flipper_Touch(object sender, View.TouchEventArgs e)
{
var flipper = sender as ViewFlipper;
switch(e.Event.Action)
{
case MotionEventActions.Down:
oldTouchValue = e.Event.GetX();
break;
case MotionEventActions.Up:
float currentX = e.Event.GetX();
if (oldTouchValue < currentX)
{
flipper.ShowNext();
}
else if (oldTouchValue > currentX)
{
flipper.ShowPrevious();
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这允许我在不同的视图之间导航,但我想让它向左/向右滑动
我已经看到了一些关于如何使它工作的Java示例,但没有直接将它转换为c#的方法.
使视图滑动需要什么,有没有办法定义animationin XML?
我可以使用animations定义XML和调用来使活动滑入和滑出OverridePendingTransition,但我不确定如何在这里应用这些知识.
c# ×6
wpf ×4
.net ×1
android ×1
avalondock ×1
clipboard ×1
coding-style ×1
data-binding ×1
datatemplate ×1
email ×1
excel ×1
flowdocument ×1
python ×1
sql ×1
sqlite ×1
tcplistener ×1
xaml ×1
xceed ×1